AWS improvements
This commit is contained in:
parent
9a66fc0248
commit
eedb383845
@ -127,6 +127,11 @@ public class TbAwsSqsConsumerTemplate<T extends TbQueueMsg> implements TbQueueCo
|
|||||||
if (!subscribed) {
|
if (!subscribed) {
|
||||||
List<String> topicNames = partitions.stream().map(TopicPartitionInfo::getFullTopicName).collect(Collectors.toList());
|
List<String> topicNames = partitions.stream().map(TopicPartitionInfo::getFullTopicName).collect(Collectors.toList());
|
||||||
queueUrls = topicNames.stream().map(this::getQueueUrl).collect(Collectors.toSet());
|
queueUrls = topicNames.stream().map(this::getQueueUrl).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
if (consumerExecutor != null) {
|
||||||
|
consumerExecutor.shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
consumerExecutor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(queueUrls.size() * sqsSettings.getThreadsPerTopic() + 1));
|
consumerExecutor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(queueUrls.size() * sqsSettings.getThreadsPerTopic() + 1));
|
||||||
subscribed = true;
|
subscribed = true;
|
||||||
}
|
}
|
||||||
@ -172,7 +177,6 @@ public class TbAwsSqsConsumerTemplate<T extends TbQueueMsg> implements TbQueueCo
|
|||||||
ReceiveMessageRequest request = new ReceiveMessageRequest();
|
ReceiveMessageRequest request = new ReceiveMessageRequest();
|
||||||
request
|
request
|
||||||
.withWaitTimeSeconds(waitTimeSeconds)
|
.withWaitTimeSeconds(waitTimeSeconds)
|
||||||
.withMessageAttributeNames("headers")
|
|
||||||
.withQueueUrl(url)
|
.withQueueUrl(url)
|
||||||
.withMaxNumberOfMessages(MAX_NUM_MSGS);
|
.withMaxNumberOfMessages(MAX_NUM_MSGS);
|
||||||
return sqsClient.receiveMessage(request).getMessages();
|
return sqsClient.receiveMessage(request).getMessages();
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import org.thingsboard.server.queue.TbQueueProducer;
|
|||||||
import org.thingsboard.server.queue.common.DefaultTbQueueMsg;
|
import org.thingsboard.server.queue.common.DefaultTbQueueMsg;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
@ -80,7 +81,9 @@ public class TbAwsSqsProducerTemplate<T extends TbQueueMsg> implements TbQueuePr
|
|||||||
sendMsgRequest.withQueueUrl(getQueueUrl(tpi.getFullTopicName()));
|
sendMsgRequest.withQueueUrl(getQueueUrl(tpi.getFullTopicName()));
|
||||||
sendMsgRequest.withMessageBody(gson.toJson(new DefaultTbQueueMsg(msg)));
|
sendMsgRequest.withMessageBody(gson.toJson(new DefaultTbQueueMsg(msg)));
|
||||||
|
|
||||||
sendMsgRequest.withMessageGroupId(msg.getKey().toString());
|
sendMsgRequest.withMessageGroupId(tpi.getTopic());
|
||||||
|
sendMsgRequest.withMessageDeduplicationId(UUID.randomUUID().toString());
|
||||||
|
|
||||||
ListenableFuture<SendMessageResult> future = producerExecutor.submit(() -> sqsClient.sendMessage(sendMsgRequest));
|
ListenableFuture<SendMessageResult> future = producerExecutor.submit(() -> sqsClient.sendMessage(sendMsgRequest));
|
||||||
|
|
||||||
Futures.addCallback(future, new FutureCallback<SendMessageResult>() {
|
Futures.addCallback(future, new FutureCallback<SendMessageResult>() {
|
||||||
|
|||||||
@ -55,7 +55,6 @@ public class TbAwsSqsQueueAttributes {
|
|||||||
@PostConstruct
|
@PostConstruct
|
||||||
private void init() {
|
private void init() {
|
||||||
defaultAttributes.put(QueueAttributeName.FifoQueue.toString(), "true");
|
defaultAttributes.put(QueueAttributeName.FifoQueue.toString(), "true");
|
||||||
defaultAttributes.put(QueueAttributeName.ContentBasedDeduplication.toString(), "true");
|
|
||||||
|
|
||||||
coreAttributes = getConfigs(coreProperties);
|
coreAttributes = getConfigs(coreProperties);
|
||||||
ruleEngineAttributes = getConfigs(ruleEngineProperties);
|
ruleEngineAttributes = getConfigs(ruleEngineProperties);
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
"azure-sb": "^0.11.1",
|
"azure-sb": "^0.11.1",
|
||||||
"long": "^4.0.0",
|
"long": "^4.0.0",
|
||||||
"uuid-parse": "^1.0.0",
|
"uuid-parse": "^1.0.0",
|
||||||
|
"uuid-random": "^1.3.0",
|
||||||
"winston": "^3.0.0",
|
"winston": "^3.0.0",
|
||||||
"winston-daily-rotate-file": "^3.2.1"
|
"winston-daily-rotate-file": "^3.2.1"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
const config = require('config'),
|
const config = require('config'),
|
||||||
JsInvokeMessageProcessor = require('../api/jsInvokeMessageProcessor'),
|
JsInvokeMessageProcessor = require('../api/jsInvokeMessageProcessor'),
|
||||||
logger = require('../config/logger')._logger('awsSqsTemplate');
|
logger = require('../config/logger')._logger('awsSqsTemplate');
|
||||||
|
const uuid = require('uuid-random');
|
||||||
|
|
||||||
const requestTopic = config.get('request_topic');
|
const requestTopic = config.get('request_topic');
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ const AWS = require('aws-sdk');
|
|||||||
const queueProperties = config.get('aws_sqs.queue_properties');
|
const queueProperties = config.get('aws_sqs.queue_properties');
|
||||||
const poolInterval = config.get('js.response_poll_interval');
|
const poolInterval = config.get('js.response_poll_interval');
|
||||||
|
|
||||||
let queueAttributes = {FifoQueue: 'true', ContentBasedDeduplication: 'true'};
|
let queueAttributes = {FifoQueue: 'true'};
|
||||||
let sqsClient;
|
let sqsClient;
|
||||||
let requestQueueURL;
|
let requestQueueURL;
|
||||||
const queueUrls = new Map();
|
const queueUrls = new Map();
|
||||||
@ -51,7 +52,7 @@ function AwsSqsProducer() {
|
|||||||
queueUrls.set(responseTopic, responseQueueUrl);
|
queueUrls.set(responseTopic, responseQueueUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
let params = {MessageBody: msgBody, QueueUrl: responseQueueUrl, MessageGroupId: scriptId};
|
let params = {MessageBody: msgBody, QueueUrl: responseQueueUrl, MessageGroupId: 'js_eval', MessageDeduplicationId: uuid()};
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
sqsClient.sendMessage(params, function (err, data) {
|
sqsClient.sendMessage(params, function (err, data) {
|
||||||
|
|||||||
@ -59,11 +59,13 @@ function PubSubProducer() {
|
|||||||
|
|
||||||
const topicList = await pubSubClient.getTopics();
|
const topicList = await pubSubClient.getTopics();
|
||||||
|
|
||||||
|
if (topicList) {
|
||||||
if (topicList) {
|
if (topicList) {
|
||||||
topicList[0].forEach(topic => {
|
topicList[0].forEach(topic => {
|
||||||
topics.push(getName(topic.name));
|
topics.push(getName(topic.name));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const subscriptionList = await pubSubClient.getSubscriptions();
|
const subscriptionList = await pubSubClient.getSubscriptions();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user