Commit 9fa82078a02d56ce1f3835bc6788b97ed52c54c8
Committed by
Andrew Shvayka
1 parent
0a136588
created TbAwsSqsQueueAttributes and added queue properties to yml
Showing
26 changed files
with
334 additions
and
214 deletions
@@ -533,7 +533,13 @@ queue: | @@ -533,7 +533,13 @@ queue: | ||
533 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" | 533 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" |
534 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" | 534 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" |
535 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" | 535 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" |
536 | - visibility_timeout: "${TB_QUEUE_AWS_SQS_VISIBILITY_TIMEOUT:30}" #In seconds. If messages wont commit in this time, messages will poll again | 536 | + queue-properties: |
537 | + rule-engine: "${TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
538 | + core: "${TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
539 | + transport-api: "${TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
540 | + notifications: "${TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
541 | + js-executor: "${TB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
542 | + # VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds | ||
537 | pubsub: | 543 | pubsub: |
538 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" | 544 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" |
539 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" | 545 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" |
@@ -23,7 +23,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | @@ -23,7 +23,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
23 | import org.springframework.stereotype.Component; | 23 | import org.springframework.stereotype.Component; |
24 | import org.thingsboard.server.queue.TbQueueAdmin; | 24 | import org.thingsboard.server.queue.TbQueueAdmin; |
25 | 25 | ||
26 | -import javax.annotation.PreDestroy; | ||
27 | import java.io.IOException; | 26 | import java.io.IOException; |
28 | import java.util.Set; | 27 | import java.util.Set; |
29 | import java.util.concurrent.ConcurrentHashMap; | 28 | import java.util.concurrent.ConcurrentHashMap; |
@@ -68,8 +67,7 @@ public class TbServiceBusAdmin implements TbQueueAdmin { | @@ -68,8 +67,7 @@ public class TbServiceBusAdmin implements TbQueueAdmin { | ||
68 | } | 67 | } |
69 | } | 68 | } |
70 | 69 | ||
71 | - @PreDestroy | ||
72 | - private void destroy() { | 70 | + public void destroy() { |
73 | try { | 71 | try { |
74 | client.close(); | 72 | client.close(); |
75 | } catch (IOException e) { | 73 | } catch (IOException e) { |
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TbKafkaAdmin.java
renamed from
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TBKafkaAdmin.java
@@ -32,7 +32,7 @@ import java.util.concurrent.ExecutionException; | @@ -32,7 +32,7 @@ import java.util.concurrent.ExecutionException; | ||
32 | * Created by ashvayka on 24.09.18. | 32 | * Created by ashvayka on 24.09.18. |
33 | */ | 33 | */ |
34 | @Slf4j | 34 | @Slf4j |
35 | -public class TBKafkaAdmin implements TbQueueAdmin { | 35 | +public class TbKafkaAdmin implements TbQueueAdmin { |
36 | 36 | ||
37 | private final AdminClient client; | 37 | private final AdminClient client; |
38 | private final Map<String, String> topicConfigs; | 38 | private final Map<String, String> topicConfigs; |
@@ -40,7 +40,7 @@ public class TBKafkaAdmin implements TbQueueAdmin { | @@ -40,7 +40,7 @@ public class TBKafkaAdmin implements TbQueueAdmin { | ||
40 | 40 | ||
41 | private final short replicationFactor; | 41 | private final short replicationFactor; |
42 | 42 | ||
43 | - public TBKafkaAdmin(TbKafkaSettings settings, Map<String, String> topicConfigs) { | 43 | + public TbKafkaAdmin(TbKafkaSettings settings, Map<String, String> topicConfigs) { |
44 | client = AdminClient.create(settings.toProps()); | 44 | client = AdminClient.create(settings.toProps()); |
45 | this.topicConfigs = topicConfigs; | 45 | this.topicConfigs = topicConfigs; |
46 | 46 | ||
@@ -76,6 +76,13 @@ public class TBKafkaAdmin implements TbQueueAdmin { | @@ -76,6 +76,13 @@ public class TBKafkaAdmin implements TbQueueAdmin { | ||
76 | 76 | ||
77 | } | 77 | } |
78 | 78 | ||
79 | + @Override | ||
80 | + public void destroy() { | ||
81 | + if (client != null) { | ||
82 | + client.close(); | ||
83 | + } | ||
84 | + } | ||
85 | + | ||
79 | public CreateTopicsResult createTopic(NewTopic topic) { | 86 | public CreateTopicsResult createTopic(NewTopic topic) { |
80 | return client.createTopics(Collections.singletonList(topic)); | 87 | return client.createTopics(Collections.singletonList(topic)); |
81 | } | 88 | } |
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TbKafkaConsumerTemplate.java
renamed from
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TBKafkaConsumerTemplate.java
@@ -42,7 +42,7 @@ import java.util.stream.Collectors; | @@ -42,7 +42,7 @@ import java.util.stream.Collectors; | ||
42 | * Created by ashvayka on 24.09.18. | 42 | * Created by ashvayka on 24.09.18. |
43 | */ | 43 | */ |
44 | @Slf4j | 44 | @Slf4j |
45 | -public class TBKafkaConsumerTemplate<T extends TbQueueMsg> implements TbQueueConsumer<T> { | 45 | +public class TbKafkaConsumerTemplate<T extends TbQueueMsg> implements TbQueueConsumer<T> { |
46 | 46 | ||
47 | private final TbQueueAdmin admin; | 47 | private final TbQueueAdmin admin; |
48 | private final KafkaConsumer<String, byte[]> consumer; | 48 | private final KafkaConsumer<String, byte[]> consumer; |
@@ -55,7 +55,7 @@ public class TBKafkaConsumerTemplate<T extends TbQueueMsg> implements TbQueueCon | @@ -55,7 +55,7 @@ public class TBKafkaConsumerTemplate<T extends TbQueueMsg> implements TbQueueCon | ||
55 | private final String topic; | 55 | private final String topic; |
56 | 56 | ||
57 | @Builder | 57 | @Builder |
58 | - private TBKafkaConsumerTemplate(TbKafkaSettings settings, TbKafkaDecoder<T> decoder, | 58 | + private TbKafkaConsumerTemplate(TbKafkaSettings settings, TbKafkaDecoder<T> decoder, |
59 | String clientId, String groupId, String topic, | 59 | String clientId, String groupId, String topic, |
60 | boolean autoCommit, int autoCommitIntervalMs, | 60 | boolean autoCommit, int autoCommitIntervalMs, |
61 | int maxPollRecords, | 61 | int maxPollRecords, |
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TbKafkaHandler.java
deleted
100644 → 0
1 | -/** | ||
2 | - * Copyright © 2016-2020 The Thingsboard Authors | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | -package org.thingsboard.server.queue.kafka; | ||
17 | - | ||
18 | -import com.google.common.util.concurrent.ListenableFuture; | ||
19 | - | ||
20 | -/** | ||
21 | - * Created by ashvayka on 05.10.18. | ||
22 | - */ | ||
23 | -public interface TbKafkaHandler<Request, Response> { | ||
24 | - | ||
25 | - ListenableFuture<Response> handle(Request request); | ||
26 | - | ||
27 | -} |
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TbKafkaPartitioner.java
deleted
100644 → 0
1 | -/** | ||
2 | - * Copyright © 2016-2020 The Thingsboard Authors | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | -package org.thingsboard.server.queue.kafka; | ||
17 | - | ||
18 | -import org.apache.kafka.clients.producer.Partitioner; | ||
19 | -import org.apache.kafka.common.PartitionInfo; | ||
20 | - | ||
21 | -import java.util.List; | ||
22 | - | ||
23 | -/** | ||
24 | - * Created by ashvayka on 25.09.18. | ||
25 | - */ | ||
26 | -public interface TbKafkaPartitioner<T> extends Partitioner { | ||
27 | - | ||
28 | - int partition(String topic, String key, T value, byte[] encodedValue, List<PartitionInfo> partitions); | ||
29 | - | ||
30 | -} |
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TbKafkaProducerTemplate.java
renamed from
common/queue/src/main/java/org/thingsboard/server/queue/kafka/TBKafkaProducerTemplate.java
@@ -39,7 +39,7 @@ import java.util.stream.Collectors; | @@ -39,7 +39,7 @@ import java.util.stream.Collectors; | ||
39 | * Created by ashvayka on 24.09.18. | 39 | * Created by ashvayka on 24.09.18. |
40 | */ | 40 | */ |
41 | @Slf4j | 41 | @Slf4j |
42 | -public class TBKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueueProducer<T> { | 42 | +public class TbKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueueProducer<T> { |
43 | 43 | ||
44 | private final KafkaProducer<String, byte[]> producer; | 44 | private final KafkaProducer<String, byte[]> producer; |
45 | 45 | ||
@@ -54,7 +54,7 @@ public class TBKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueuePro | @@ -54,7 +54,7 @@ public class TBKafkaProducerTemplate<T extends TbQueueMsg> implements TbQueuePro | ||
54 | private final Set<TopicPartitionInfo> topics; | 54 | private final Set<TopicPartitionInfo> topics; |
55 | 55 | ||
56 | @Builder | 56 | @Builder |
57 | - private TBKafkaProducerTemplate(TbKafkaSettings settings, TbKafkaPartitioner<T> partitioner, String defaultTopic, String clientId, TbQueueAdmin admin) { | 57 | + private TbKafkaProducerTemplate(TbKafkaSettings settings, String defaultTopic, String clientId, TbQueueAdmin admin) { |
58 | Properties props = settings.toProps(); | 58 | Properties props = settings.toProps(); |
59 | props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); | 59 | props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); |
60 | props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer"); | 60 | props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer"); |
@@ -17,6 +17,7 @@ package org.thingsboard.server.queue.kafka; | @@ -17,6 +17,7 @@ package org.thingsboard.server.queue.kafka; | ||
17 | 17 | ||
18 | import lombok.Getter; | 18 | import lombok.Getter; |
19 | import org.springframework.beans.factory.annotation.Value; | 19 | import org.springframework.beans.factory.annotation.Value; |
20 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
20 | import org.springframework.stereotype.Component; | 21 | import org.springframework.stereotype.Component; |
21 | 22 | ||
22 | import javax.annotation.PostConstruct; | 23 | import javax.annotation.PostConstruct; |
@@ -24,6 +25,7 @@ import java.util.HashMap; | @@ -24,6 +25,7 @@ import java.util.HashMap; | ||
24 | import java.util.Map; | 25 | import java.util.Map; |
25 | 26 | ||
26 | @Component | 27 | @Component |
28 | +@ConditionalOnExpression("'${queue.type:null}'=='kafka'") | ||
27 | public class TbKafkaTopicConfigs { | 29 | public class TbKafkaTopicConfigs { |
28 | @Value("${queue.kafka.topic-properties.core}") | 30 | @Value("${queue.kafka.topic-properties.core}") |
29 | private String coreProperties; | 31 | private String coreProperties; |
@@ -36,6 +36,7 @@ import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; | @@ -36,6 +36,7 @@ import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; | ||
36 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; | 36 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; |
37 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; | 37 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; |
38 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; | 38 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; |
39 | +import org.thingsboard.server.queue.sqs.TbAwsSqsQueueAttributes; | ||
39 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; | 40 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; |
40 | 41 | ||
41 | @Component | 42 | @Component |
@@ -49,14 +50,20 @@ public class AwsSqsMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng | @@ -49,14 +50,20 @@ public class AwsSqsMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng | ||
49 | private final TbQueueTransportApiSettings transportApiSettings; | 50 | private final TbQueueTransportApiSettings transportApiSettings; |
50 | private final TbQueueTransportNotificationSettings transportNotificationSettings; | 51 | private final TbQueueTransportNotificationSettings transportNotificationSettings; |
51 | private final TbAwsSqsSettings sqsSettings; | 52 | private final TbAwsSqsSettings sqsSettings; |
52 | - private final TbQueueAdmin admin; | 53 | + |
54 | + private final TbQueueAdmin coreAdmin; | ||
55 | + private final TbQueueAdmin ruleEngineAdmin; | ||
56 | + private final TbQueueAdmin jsExecutorAdmin; | ||
57 | + private final TbQueueAdmin transportApiAdmin; | ||
58 | + private final TbQueueAdmin notificationAdmin; | ||
53 | 59 | ||
54 | public AwsSqsMonolithQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, | 60 | public AwsSqsMonolithQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, |
55 | TbQueueRuleEngineSettings ruleEngineSettings, | 61 | TbQueueRuleEngineSettings ruleEngineSettings, |
56 | TbServiceInfoProvider serviceInfoProvider, | 62 | TbServiceInfoProvider serviceInfoProvider, |
57 | TbQueueTransportApiSettings transportApiSettings, | 63 | TbQueueTransportApiSettings transportApiSettings, |
58 | TbQueueTransportNotificationSettings transportNotificationSettings, | 64 | TbQueueTransportNotificationSettings transportNotificationSettings, |
59 | - TbAwsSqsSettings sqsSettings) { | 65 | + TbAwsSqsSettings sqsSettings, |
66 | + TbAwsSqsQueueAttributes sqsQueueAttributes) { | ||
60 | this.partitionService = partitionService; | 67 | this.partitionService = partitionService; |
61 | this.coreSettings = coreSettings; | 68 | this.coreSettings = coreSettings; |
62 | this.serviceInfoProvider = serviceInfoProvider; | 69 | this.serviceInfoProvider = serviceInfoProvider; |
@@ -64,69 +71,74 @@ public class AwsSqsMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng | @@ -64,69 +71,74 @@ public class AwsSqsMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng | ||
64 | this.transportApiSettings = transportApiSettings; | 71 | this.transportApiSettings = transportApiSettings; |
65 | this.transportNotificationSettings = transportNotificationSettings; | 72 | this.transportNotificationSettings = transportNotificationSettings; |
66 | this.sqsSettings = sqsSettings; | 73 | this.sqsSettings = sqsSettings; |
67 | - admin = new TbAwsSqsAdmin(sqsSettings); | 74 | + |
75 | + this.coreAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getCoreAttributes()); | ||
76 | + this.ruleEngineAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getRuleEngineAttributes()); | ||
77 | + this.jsExecutorAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getJsExecutorAttributes()); | ||
78 | + this.transportApiAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getTransportApiAttributes()); | ||
79 | + this.notificationAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getNotificationsAttributes()); | ||
68 | } | 80 | } |
69 | 81 | ||
70 | @Override | 82 | @Override |
71 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToTransportMsg>> createTransportNotificationsMsgProducer() { | 83 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToTransportMsg>> createTransportNotificationsMsgProducer() { |
72 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, transportNotificationSettings.getNotificationsTopic()); | 84 | + return new TbAwsSqsProducerTemplate<>(notificationAdmin, sqsSettings, transportNotificationSettings.getNotificationsTopic()); |
73 | } | 85 | } |
74 | 86 | ||
75 | @Override | 87 | @Override |
76 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 88 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
77 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic()); | 89 | + return new TbAwsSqsProducerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic()); |
78 | } | 90 | } |
79 | 91 | ||
80 | @Override | 92 | @Override |
81 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 93 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
82 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic()); | 94 | + return new TbAwsSqsProducerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic()); |
83 | } | 95 | } |
84 | 96 | ||
85 | @Override | 97 | @Override |
86 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreMsg>> createTbCoreMsgProducer() { | 98 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreMsg>> createTbCoreMsgProducer() { |
87 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 99 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
88 | } | 100 | } |
89 | 101 | ||
90 | @Override | 102 | @Override |
91 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 103 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
92 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 104 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
93 | } | 105 | } |
94 | 106 | ||
95 | @Override | 107 | @Override |
96 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { | 108 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
97 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic(), | 109 | + return new TbAwsSqsConsumerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic(), |
98 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); | 110 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); |
99 | } | 111 | } |
100 | 112 | ||
101 | @Override | 113 | @Override |
102 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { | 114 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
103 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, | 115 | + return new TbAwsSqsConsumerTemplate<>(notificationAdmin, sqsSettings, |
104 | partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), | 116 | partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
105 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); | 117 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
106 | } | 118 | } |
107 | 119 | ||
108 | @Override | 120 | @Override |
109 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToCoreMsg>> createToCoreMsgConsumer() { | 121 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToCoreMsg>> createToCoreMsgConsumer() { |
110 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, coreSettings.getTopic(), | 122 | + return new TbAwsSqsConsumerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic(), |
111 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); | 123 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); |
112 | } | 124 | } |
113 | 125 | ||
114 | @Override | 126 | @Override |
115 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { | 127 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
116 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, | 128 | + return new TbAwsSqsConsumerTemplate<>(notificationAdmin, sqsSettings, |
117 | partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), | 129 | partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
118 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); | 130 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
119 | } | 131 | } |
120 | 132 | ||
121 | @Override | 133 | @Override |
122 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.TransportApiRequestMsg>> createTransportApiRequestConsumer() { | 134 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
123 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, transportApiSettings.getRequestsTopic(), | 135 | + return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getRequestsTopic(), |
124 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); | 136 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); |
125 | } | 137 | } |
126 | 138 | ||
127 | @Override | 139 | @Override |
128 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.TransportApiResponseMsg>> createTransportApiResponseProducer() { | 140 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.TransportApiResponseMsg>> createTransportApiResponseProducer() { |
129 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, transportApiSettings.getResponsesTopic()); | 141 | + return new TbAwsSqsProducerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getResponsesTopic()); |
130 | } | 142 | } |
131 | 143 | ||
132 | @Override | 144 | @Override |
@@ -40,6 +40,7 @@ import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; | @@ -40,6 +40,7 @@ import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; | ||
40 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; | 40 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; |
41 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; | 41 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; |
42 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; | 42 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; |
43 | +import org.thingsboard.server.queue.sqs.TbAwsSqsQueueAttributes; | ||
43 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; | 44 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; |
44 | 45 | ||
45 | @Component | 46 | @Component |
@@ -52,70 +53,81 @@ public class AwsSqsTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -52,70 +53,81 @@ public class AwsSqsTbCoreQueueFactory implements TbCoreQueueFactory { | ||
52 | private final TbQueueTransportApiSettings transportApiSettings; | 53 | private final TbQueueTransportApiSettings transportApiSettings; |
53 | private final PartitionService partitionService; | 54 | private final PartitionService partitionService; |
54 | private final TbServiceInfoProvider serviceInfoProvider; | 55 | private final TbServiceInfoProvider serviceInfoProvider; |
55 | - private final TbQueueAdmin admin; | 56 | + |
57 | + private final TbQueueAdmin coreAdmin; | ||
58 | + private final TbQueueAdmin ruleEngineAdmin; | ||
59 | + private final TbQueueAdmin jsExecutorAdmin; | ||
60 | + private final TbQueueAdmin transportApiAdmin; | ||
61 | + private final TbQueueAdmin notificationAdmin; | ||
56 | 62 | ||
57 | public AwsSqsTbCoreQueueFactory(TbAwsSqsSettings sqsSettings, | 63 | public AwsSqsTbCoreQueueFactory(TbAwsSqsSettings sqsSettings, |
58 | TbQueueCoreSettings coreSettings, | 64 | TbQueueCoreSettings coreSettings, |
59 | TbQueueTransportApiSettings transportApiSettings, | 65 | TbQueueTransportApiSettings transportApiSettings, |
60 | TbQueueRuleEngineSettings ruleEngineSettings, | 66 | TbQueueRuleEngineSettings ruleEngineSettings, |
61 | PartitionService partitionService, | 67 | PartitionService partitionService, |
62 | - TbServiceInfoProvider serviceInfoProvider) { | 68 | + TbServiceInfoProvider serviceInfoProvider, |
69 | + TbAwsSqsQueueAttributes sqsQueueAttributes) { | ||
63 | this.sqsSettings = sqsSettings; | 70 | this.sqsSettings = sqsSettings; |
64 | this.coreSettings = coreSettings; | 71 | this.coreSettings = coreSettings; |
65 | this.transportApiSettings = transportApiSettings; | 72 | this.transportApiSettings = transportApiSettings; |
66 | this.ruleEngineSettings = ruleEngineSettings; | 73 | this.ruleEngineSettings = ruleEngineSettings; |
67 | this.partitionService = partitionService; | 74 | this.partitionService = partitionService; |
68 | this.serviceInfoProvider = serviceInfoProvider; | 75 | this.serviceInfoProvider = serviceInfoProvider; |
69 | - this.admin = new TbAwsSqsAdmin(sqsSettings); | 76 | + |
77 | + this.coreAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getCoreAttributes()); | ||
78 | + this.ruleEngineAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getRuleEngineAttributes()); | ||
79 | + this.jsExecutorAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getJsExecutorAttributes()); | ||
80 | + this.transportApiAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getTransportApiAttributes()); | ||
81 | + this.notificationAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getNotificationsAttributes()); | ||
70 | } | 82 | } |
71 | 83 | ||
72 | @Override | 84 | @Override |
73 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { | 85 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
74 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 86 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
75 | } | 87 | } |
76 | 88 | ||
77 | @Override | 89 | @Override |
78 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 90 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
79 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 91 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
80 | } | 92 | } |
81 | 93 | ||
82 | @Override | 94 | @Override |
83 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 95 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
84 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic()); | 96 | + return new TbAwsSqsProducerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic()); |
85 | } | 97 | } |
86 | 98 | ||
87 | @Override | 99 | @Override |
88 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 100 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
89 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 101 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
90 | } | 102 | } |
91 | 103 | ||
92 | @Override | 104 | @Override |
93 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 105 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
94 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 106 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
95 | } | 107 | } |
96 | 108 | ||
97 | @Override | 109 | @Override |
98 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { | 110 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { |
99 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, coreSettings.getTopic(), | 111 | + return new TbAwsSqsConsumerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic(), |
100 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); | 112 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); |
101 | } | 113 | } |
102 | 114 | ||
103 | @Override | 115 | @Override |
104 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { | 116 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
105 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, | 117 | + return new TbAwsSqsConsumerTemplate<>(notificationAdmin, sqsSettings, |
106 | partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), | 118 | partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
107 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); | 119 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
108 | } | 120 | } |
109 | 121 | ||
110 | @Override | 122 | @Override |
111 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { | 123 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
112 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, transportApiSettings.getRequestsTopic(), | 124 | + return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getRequestsTopic(), |
113 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); | 125 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); |
114 | } | 126 | } |
115 | 127 | ||
116 | @Override | 128 | @Override |
117 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { | 129 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { |
118 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 130 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
119 | } | 131 | } |
120 | 132 | ||
121 | @Override | 133 | @Override |
common/queue/src/main/java/org/thingsboard/server/queue/provider/AwsSqsTbRuleEngineQueueFactory.java
@@ -37,6 +37,7 @@ import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; | @@ -37,6 +37,7 @@ import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; | ||
37 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; | 37 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; |
38 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; | 38 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; |
39 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; | 39 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; |
40 | +import org.thingsboard.server.queue.sqs.TbAwsSqsQueueAttributes; | ||
40 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; | 41 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; |
41 | 42 | ||
42 | @Component | 43 | @Component |
@@ -48,54 +49,63 @@ public class AwsSqsTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory | @@ -48,54 +49,63 @@ public class AwsSqsTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory | ||
48 | private final TbServiceInfoProvider serviceInfoProvider; | 49 | private final TbServiceInfoProvider serviceInfoProvider; |
49 | private final TbQueueRuleEngineSettings ruleEngineSettings; | 50 | private final TbQueueRuleEngineSettings ruleEngineSettings; |
50 | private final TbAwsSqsSettings sqsSettings; | 51 | private final TbAwsSqsSettings sqsSettings; |
51 | - private final TbQueueAdmin admin; | 52 | + |
53 | + private final TbQueueAdmin coreAdmin; | ||
54 | + private final TbQueueAdmin ruleEngineAdmin; | ||
55 | + private final TbQueueAdmin jsExecutorAdmin; | ||
56 | + private final TbQueueAdmin notificationAdmin; | ||
52 | 57 | ||
53 | public AwsSqsTbRuleEngineQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, | 58 | public AwsSqsTbRuleEngineQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, |
54 | TbQueueRuleEngineSettings ruleEngineSettings, | 59 | TbQueueRuleEngineSettings ruleEngineSettings, |
55 | TbServiceInfoProvider serviceInfoProvider, | 60 | TbServiceInfoProvider serviceInfoProvider, |
56 | - TbAwsSqsSettings sqsSettings) { | 61 | + TbAwsSqsSettings sqsSettings, |
62 | + TbAwsSqsQueueAttributes sqsQueueAttributes) { | ||
57 | this.partitionService = partitionService; | 63 | this.partitionService = partitionService; |
58 | this.coreSettings = coreSettings; | 64 | this.coreSettings = coreSettings; |
59 | this.serviceInfoProvider = serviceInfoProvider; | 65 | this.serviceInfoProvider = serviceInfoProvider; |
60 | this.ruleEngineSettings = ruleEngineSettings; | 66 | this.ruleEngineSettings = ruleEngineSettings; |
61 | this.sqsSettings = sqsSettings; | 67 | this.sqsSettings = sqsSettings; |
62 | - admin = new TbAwsSqsAdmin(sqsSettings); | 68 | + |
69 | + this.coreAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getCoreAttributes()); | ||
70 | + this.ruleEngineAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getRuleEngineAttributes()); | ||
71 | + this.jsExecutorAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getJsExecutorAttributes()); | ||
72 | + this.notificationAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getNotificationsAttributes()); | ||
63 | } | 73 | } |
64 | 74 | ||
65 | @Override | 75 | @Override |
66 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { | 76 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
67 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 77 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
68 | } | 78 | } |
69 | 79 | ||
70 | @Override | 80 | @Override |
71 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 81 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
72 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 82 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
73 | } | 83 | } |
74 | 84 | ||
75 | @Override | 85 | @Override |
76 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 86 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
77 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic()); | 87 | + return new TbAwsSqsProducerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic()); |
78 | } | 88 | } |
79 | 89 | ||
80 | @Override | 90 | @Override |
81 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 91 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
82 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 92 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
83 | } | 93 | } |
84 | 94 | ||
85 | @Override | 95 | @Override |
86 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 96 | public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
87 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, coreSettings.getTopic()); | 97 | + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getTopic()); |
88 | } | 98 | } |
89 | 99 | ||
90 | @Override | 100 | @Override |
91 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { | 101 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
92 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, ruleEngineSettings.getTopic(), | 102 | + return new TbAwsSqsConsumerTemplate<>(ruleEngineAdmin, sqsSettings, ruleEngineSettings.getTopic(), |
93 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); | 103 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); |
94 | } | 104 | } |
95 | 105 | ||
96 | @Override | 106 | @Override |
97 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { | 107 | public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
98 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, | 108 | + return new TbAwsSqsConsumerTemplate<>(notificationAdmin, sqsSettings, |
99 | partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), | 109 | partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
100 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); | 110 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
101 | } | 111 | } |
@@ -35,6 +35,7 @@ import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSetting | @@ -35,6 +35,7 @@ import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSetting | ||
35 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; | 35 | import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; |
36 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; | 36 | import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; |
37 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; | 37 | import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; |
38 | +import org.thingsboard.server.queue.sqs.TbAwsSqsQueueAttributes; | ||
38 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; | 39 | import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; |
39 | 40 | ||
40 | @Component | 41 | @Component |
@@ -44,33 +45,38 @@ public class AwsSqsTransportQueueFactory implements TbTransportQueueFactory { | @@ -44,33 +45,38 @@ public class AwsSqsTransportQueueFactory implements TbTransportQueueFactory { | ||
44 | private final TbQueueTransportApiSettings transportApiSettings; | 45 | private final TbQueueTransportApiSettings transportApiSettings; |
45 | private final TbQueueTransportNotificationSettings transportNotificationSettings; | 46 | private final TbQueueTransportNotificationSettings transportNotificationSettings; |
46 | private final TbAwsSqsSettings sqsSettings; | 47 | private final TbAwsSqsSettings sqsSettings; |
47 | - private final TbQueueAdmin admin; | ||
48 | private final TbServiceInfoProvider serviceInfoProvider; | 48 | private final TbServiceInfoProvider serviceInfoProvider; |
49 | 49 | ||
50 | + private final TbQueueAdmin transportApiAdmin; | ||
51 | + private final TbQueueAdmin notificationAdmin; | ||
52 | + | ||
50 | public AwsSqsTransportQueueFactory(TbQueueTransportApiSettings transportApiSettings, | 53 | public AwsSqsTransportQueueFactory(TbQueueTransportApiSettings transportApiSettings, |
51 | TbQueueTransportNotificationSettings transportNotificationSettings, | 54 | TbQueueTransportNotificationSettings transportNotificationSettings, |
52 | TbAwsSqsSettings sqsSettings, | 55 | TbAwsSqsSettings sqsSettings, |
53 | - TbServiceInfoProvider serviceInfoProvider) { | 56 | + TbServiceInfoProvider serviceInfoProvider, |
57 | + TbAwsSqsQueueAttributes sqsQueueAttributes) { | ||
54 | this.transportApiSettings = transportApiSettings; | 58 | this.transportApiSettings = transportApiSettings; |
55 | this.transportNotificationSettings = transportNotificationSettings; | 59 | this.transportNotificationSettings = transportNotificationSettings; |
56 | this.sqsSettings = sqsSettings; | 60 | this.sqsSettings = sqsSettings; |
57 | - admin = new TbAwsSqsAdmin(sqsSettings); | ||
58 | this.serviceInfoProvider = serviceInfoProvider; | 61 | this.serviceInfoProvider = serviceInfoProvider; |
62 | + | ||
63 | + this.transportApiAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getTransportApiAttributes()); | ||
64 | + this.notificationAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getNotificationsAttributes()); | ||
59 | } | 65 | } |
60 | 66 | ||
61 | @Override | 67 | @Override |
62 | public TbQueueRequestTemplate<TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiRequestTemplate() { | 68 | public TbQueueRequestTemplate<TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiRequestTemplate() { |
63 | TbAwsSqsProducerTemplate<TbProtoQueueMsg<TransportApiRequestMsg>> producerTemplate = | 69 | TbAwsSqsProducerTemplate<TbProtoQueueMsg<TransportApiRequestMsg>> producerTemplate = |
64 | - new TbAwsSqsProducerTemplate<>(admin, sqsSettings, transportApiSettings.getRequestsTopic()); | 70 | + new TbAwsSqsProducerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getRequestsTopic()); |
65 | 71 | ||
66 | TbAwsSqsConsumerTemplate<TbProtoQueueMsg<TransportApiResponseMsg>> consumerTemplate = | 72 | TbAwsSqsConsumerTemplate<TbProtoQueueMsg<TransportApiResponseMsg>> consumerTemplate = |
67 | - new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, | 73 | + new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, |
68 | transportApiSettings.getResponsesTopic() + "_" + serviceInfoProvider.getServiceId(), | 74 | transportApiSettings.getResponsesTopic() + "_" + serviceInfoProvider.getServiceId(), |
69 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiResponseMsg.parseFrom(msg.getData()), msg.getHeaders())); | 75 | msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiResponseMsg.parseFrom(msg.getData()), msg.getHeaders())); |
70 | 76 | ||
71 | DefaultTbQueueRequestTemplate.DefaultTbQueueRequestTemplateBuilder | 77 | DefaultTbQueueRequestTemplate.DefaultTbQueueRequestTemplateBuilder |
72 | <TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> templateBuilder = DefaultTbQueueRequestTemplate.builder(); | 78 | <TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> templateBuilder = DefaultTbQueueRequestTemplate.builder(); |
73 | - templateBuilder.queueAdmin(admin); | 79 | + templateBuilder.queueAdmin(transportApiAdmin); |
74 | templateBuilder.requestTemplate(producerTemplate); | 80 | templateBuilder.requestTemplate(producerTemplate); |
75 | templateBuilder.responseTemplate(consumerTemplate); | 81 | templateBuilder.responseTemplate(consumerTemplate); |
76 | templateBuilder.maxPendingRequests(transportApiSettings.getMaxPendingRequests()); | 82 | templateBuilder.maxPendingRequests(transportApiSettings.getMaxPendingRequests()); |
@@ -81,17 +87,17 @@ public class AwsSqsTransportQueueFactory implements TbTransportQueueFactory { | @@ -81,17 +87,17 @@ public class AwsSqsTransportQueueFactory implements TbTransportQueueFactory { | ||
81 | 87 | ||
82 | @Override | 88 | @Override |
83 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 89 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
84 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, transportApiSettings.getRequestsTopic()); | 90 | + return new TbAwsSqsProducerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getRequestsTopic()); |
85 | } | 91 | } |
86 | 92 | ||
87 | @Override | 93 | @Override |
88 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 94 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
89 | - return new TbAwsSqsProducerTemplate<>(admin, sqsSettings, transportApiSettings.getRequestsTopic()); | 95 | + return new TbAwsSqsProducerTemplate<>(transportApiAdmin, sqsSettings, transportApiSettings.getRequestsTopic()); |
90 | } | 96 | } |
91 | 97 | ||
92 | @Override | 98 | @Override |
93 | public TbQueueConsumer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsConsumer() { | 99 | public TbQueueConsumer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsConsumer() { |
94 | - return new TbAwsSqsConsumerTemplate<>(admin, sqsSettings, transportNotificationSettings.getNotificationsTopic() + "_" + serviceInfoProvider.getServiceId(), | 100 | + return new TbAwsSqsConsumerTemplate<>(notificationAdmin, sqsSettings, transportNotificationSettings.getNotificationsTopic() + "_" + serviceInfoProvider.getServiceId(), |
95 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToTransportMsg.parseFrom(msg.getData()), msg.getHeaders())); | 101 | msg -> new TbProtoQueueMsg<>(msg.getKey(), ToTransportMsg.parseFrom(msg.getData()), msg.getHeaders())); |
96 | } | 102 | } |
97 | } | 103 | } |
@@ -23,6 +23,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg; | @@ -23,6 +23,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg; | ||
23 | import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg; | 23 | import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg; |
24 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; | 24 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiRequestMsg; |
25 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; | 25 | import org.thingsboard.server.gen.transport.TransportProtos.TransportApiResponseMsg; |
26 | +import org.thingsboard.server.queue.TbQueueAdmin; | ||
26 | import org.thingsboard.server.queue.TbQueueConsumer; | 27 | import org.thingsboard.server.queue.TbQueueConsumer; |
27 | import org.thingsboard.server.queue.TbQueueProducer; | 28 | import org.thingsboard.server.queue.TbQueueProducer; |
28 | import org.thingsboard.server.queue.TbQueueRequestTemplate; | 29 | import org.thingsboard.server.queue.TbQueueRequestTemplate; |
@@ -33,6 +34,7 @@ import org.thingsboard.server.queue.memory.InMemoryTbQueueConsumer; | @@ -33,6 +34,7 @@ import org.thingsboard.server.queue.memory.InMemoryTbQueueConsumer; | ||
33 | import org.thingsboard.server.queue.memory.InMemoryTbQueueProducer; | 34 | import org.thingsboard.server.queue.memory.InMemoryTbQueueProducer; |
34 | import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; | 35 | import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; |
35 | import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSettings; | 36 | import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSettings; |
37 | +import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; | ||
36 | 38 | ||
37 | @Component | 39 | @Component |
38 | @ConditionalOnExpression("'${queue.type:null}'=='in-memory' && ('${service.type:null}'=='monolith' || '${service.type:null}'=='tb-transport')") | 40 | @ConditionalOnExpression("'${queue.type:null}'=='in-memory' && ('${service.type:null}'=='monolith' || '${service.type:null}'=='tb-transport')") |
@@ -60,8 +62,15 @@ public class InMemoryTbTransportQueueFactory implements TbTransportQueueFactory | @@ -60,8 +62,15 @@ public class InMemoryTbTransportQueueFactory implements TbTransportQueueFactory | ||
60 | 62 | ||
61 | DefaultTbQueueRequestTemplate.DefaultTbQueueRequestTemplateBuilder | 63 | DefaultTbQueueRequestTemplate.DefaultTbQueueRequestTemplateBuilder |
62 | <TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> templateBuilder = DefaultTbQueueRequestTemplate.builder(); | 64 | <TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> templateBuilder = DefaultTbQueueRequestTemplate.builder(); |
63 | - templateBuilder.queueAdmin(topic -> { | 65 | + |
66 | + templateBuilder.queueAdmin(new TbQueueAdmin() { | ||
67 | + @Override | ||
68 | + public void createTopicIfNotExists(String topic) {} | ||
69 | + | ||
70 | + @Override | ||
71 | + public void destroy() {} | ||
64 | }); | 72 | }); |
73 | + | ||
65 | templateBuilder.requestTemplate(producerTemplate); | 74 | templateBuilder.requestTemplate(producerTemplate); |
66 | templateBuilder.responseTemplate(consumerTemplate); | 75 | templateBuilder.responseTemplate(consumerTemplate); |
67 | templateBuilder.maxPendingRequests(transportApiSettings.getMaxPendingRequests()); | 76 | templateBuilder.maxPendingRequests(transportApiSettings.getMaxPendingRequests()); |
@@ -37,9 +37,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | @@ -37,9 +37,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | ||
37 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; | 37 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
38 | import org.thingsboard.server.queue.discovery.PartitionService; | 38 | import org.thingsboard.server.queue.discovery.PartitionService; |
39 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; | 39 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
40 | -import org.thingsboard.server.queue.kafka.TBKafkaAdmin; | ||
41 | -import org.thingsboard.server.queue.kafka.TBKafkaConsumerTemplate; | ||
42 | -import org.thingsboard.server.queue.kafka.TBKafkaProducerTemplate; | 40 | +import org.thingsboard.server.queue.kafka.TbKafkaAdmin; |
41 | +import org.thingsboard.server.queue.kafka.TbKafkaConsumerTemplate; | ||
42 | +import org.thingsboard.server.queue.kafka.TbKafkaProducerTemplate; | ||
43 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; | 43 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; |
44 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; | 44 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; |
45 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; | 45 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
@@ -87,16 +87,16 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -87,16 +87,16 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
87 | this.transportNotificationSettings = transportNotificationSettings; | 87 | this.transportNotificationSettings = transportNotificationSettings; |
88 | this.jsInvokeSettings = jsInvokeSettings; | 88 | this.jsInvokeSettings = jsInvokeSettings; |
89 | 89 | ||
90 | - this.coreAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); | ||
91 | - this.ruleEngineAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
92 | - this.jsExecutorAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
93 | - this.transportApiAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
94 | - this.notificationAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | 90 | + this.coreAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); |
91 | + this.ruleEngineAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
92 | + this.jsExecutorAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
93 | + this.transportApiAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
94 | + this.notificationAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | ||
95 | } | 95 | } |
96 | 96 | ||
97 | @Override | 97 | @Override |
98 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { | 98 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
99 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 99 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
100 | requestBuilder.settings(kafkaSettings); | 100 | requestBuilder.settings(kafkaSettings); |
101 | requestBuilder.clientId("monolith-transport-notifications-" + serviceInfoProvider.getServiceId()); | 101 | requestBuilder.clientId("monolith-transport-notifications-" + serviceInfoProvider.getServiceId()); |
102 | requestBuilder.defaultTopic(transportNotificationSettings.getNotificationsTopic()); | 102 | requestBuilder.defaultTopic(transportNotificationSettings.getNotificationsTopic()); |
@@ -106,7 +106,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -106,7 +106,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
106 | 106 | ||
107 | @Override | 107 | @Override |
108 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 108 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
109 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 109 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
110 | requestBuilder.settings(kafkaSettings); | 110 | requestBuilder.settings(kafkaSettings); |
111 | requestBuilder.clientId("monolith-rule-engine-" + serviceInfoProvider.getServiceId()); | 111 | requestBuilder.clientId("monolith-rule-engine-" + serviceInfoProvider.getServiceId()); |
112 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); | 112 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); |
@@ -116,7 +116,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -116,7 +116,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
116 | 116 | ||
117 | @Override | 117 | @Override |
118 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 118 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
119 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 119 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
120 | requestBuilder.settings(kafkaSettings); | 120 | requestBuilder.settings(kafkaSettings); |
121 | requestBuilder.clientId("monolith-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); | 121 | requestBuilder.clientId("monolith-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); |
122 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); | 122 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); |
@@ -126,7 +126,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -126,7 +126,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
126 | 126 | ||
127 | @Override | 127 | @Override |
128 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 128 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
129 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 129 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
130 | requestBuilder.settings(kafkaSettings); | 130 | requestBuilder.settings(kafkaSettings); |
131 | requestBuilder.clientId("monolith-core-" + serviceInfoProvider.getServiceId()); | 131 | requestBuilder.clientId("monolith-core-" + serviceInfoProvider.getServiceId()); |
132 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 132 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -136,7 +136,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -136,7 +136,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
136 | 136 | ||
137 | @Override | 137 | @Override |
138 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 138 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
139 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 139 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
140 | requestBuilder.settings(kafkaSettings); | 140 | requestBuilder.settings(kafkaSettings); |
141 | requestBuilder.clientId("monolith-core-notifications-" + serviceInfoProvider.getServiceId()); | 141 | requestBuilder.clientId("monolith-core-notifications-" + serviceInfoProvider.getServiceId()); |
142 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 142 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -147,7 +147,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -147,7 +147,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
147 | @Override | 147 | @Override |
148 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { | 148 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
149 | String queueName = configuration.getName(); | 149 | String queueName = configuration.getName(); |
150 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 150 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
151 | consumerBuilder.settings(kafkaSettings); | 151 | consumerBuilder.settings(kafkaSettings); |
152 | consumerBuilder.topic(ruleEngineSettings.getTopic()); | 152 | consumerBuilder.topic(ruleEngineSettings.getTopic()); |
153 | consumerBuilder.clientId("re-" + queueName + "-consumer-" + serviceInfoProvider.getServiceId()); | 153 | consumerBuilder.clientId("re-" + queueName + "-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -159,7 +159,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -159,7 +159,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
159 | 159 | ||
160 | @Override | 160 | @Override |
161 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { | 161 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
162 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 162 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
163 | consumerBuilder.settings(kafkaSettings); | 163 | consumerBuilder.settings(kafkaSettings); |
164 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName()); | 164 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName()); |
165 | consumerBuilder.clientId("monolith-rule-engine-notifications-consumer-" + serviceInfoProvider.getServiceId()); | 165 | consumerBuilder.clientId("monolith-rule-engine-notifications-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -171,7 +171,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -171,7 +171,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
171 | 171 | ||
172 | @Override | 172 | @Override |
173 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { | 173 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { |
174 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 174 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
175 | consumerBuilder.settings(kafkaSettings); | 175 | consumerBuilder.settings(kafkaSettings); |
176 | consumerBuilder.topic(coreSettings.getTopic()); | 176 | consumerBuilder.topic(coreSettings.getTopic()); |
177 | consumerBuilder.clientId("monolith-core-consumer-" + serviceInfoProvider.getServiceId()); | 177 | consumerBuilder.clientId("monolith-core-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -183,7 +183,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -183,7 +183,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
183 | 183 | ||
184 | @Override | 184 | @Override |
185 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { | 185 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
186 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 186 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
187 | consumerBuilder.settings(kafkaSettings); | 187 | consumerBuilder.settings(kafkaSettings); |
188 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName()); | 188 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName()); |
189 | consumerBuilder.clientId("monolith-core-notifications-consumer-" + serviceInfoProvider.getServiceId()); | 189 | consumerBuilder.clientId("monolith-core-notifications-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -195,7 +195,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -195,7 +195,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
195 | 195 | ||
196 | @Override | 196 | @Override |
197 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { | 197 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
198 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 198 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
199 | consumerBuilder.settings(kafkaSettings); | 199 | consumerBuilder.settings(kafkaSettings); |
200 | consumerBuilder.topic(transportApiSettings.getRequestsTopic()); | 200 | consumerBuilder.topic(transportApiSettings.getRequestsTopic()); |
201 | consumerBuilder.clientId("monolith-transport-api-consumer-" + serviceInfoProvider.getServiceId()); | 201 | consumerBuilder.clientId("monolith-transport-api-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -207,7 +207,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -207,7 +207,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
207 | 207 | ||
208 | @Override | 208 | @Override |
209 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { | 209 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { |
210 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 210 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
211 | requestBuilder.settings(kafkaSettings); | 211 | requestBuilder.settings(kafkaSettings); |
212 | requestBuilder.clientId("monolith-transport-api-producer-" + serviceInfoProvider.getServiceId()); | 212 | requestBuilder.clientId("monolith-transport-api-producer-" + serviceInfoProvider.getServiceId()); |
213 | requestBuilder.defaultTopic(transportApiSettings.getResponsesTopic()); | 213 | requestBuilder.defaultTopic(transportApiSettings.getResponsesTopic()); |
@@ -218,13 +218,13 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | @@ -218,13 +218,13 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi | ||
218 | @Override | 218 | @Override |
219 | @Bean | 219 | @Bean |
220 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { | 220 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { |
221 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TBKafkaProducerTemplate.builder(); | 221 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TbKafkaProducerTemplate.builder(); |
222 | requestBuilder.settings(kafkaSettings); | 222 | requestBuilder.settings(kafkaSettings); |
223 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); | 223 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); |
224 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); | 224 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); |
225 | requestBuilder.admin(jsExecutorAdmin); | 225 | requestBuilder.admin(jsExecutorAdmin); |
226 | 226 | ||
227 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TBKafkaConsumerTemplate.builder(); | 227 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TbKafkaConsumerTemplate.builder(); |
228 | responseBuilder.settings(kafkaSettings); | 228 | responseBuilder.settings(kafkaSettings); |
229 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); | 229 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); |
230 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); | 230 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); |
@@ -37,9 +37,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | @@ -37,9 +37,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | ||
37 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; | 37 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
38 | import org.thingsboard.server.queue.discovery.PartitionService; | 38 | import org.thingsboard.server.queue.discovery.PartitionService; |
39 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; | 39 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
40 | -import org.thingsboard.server.queue.kafka.TBKafkaAdmin; | ||
41 | -import org.thingsboard.server.queue.kafka.TBKafkaConsumerTemplate; | ||
42 | -import org.thingsboard.server.queue.kafka.TBKafkaProducerTemplate; | 40 | +import org.thingsboard.server.queue.kafka.TbKafkaAdmin; |
41 | +import org.thingsboard.server.queue.kafka.TbKafkaConsumerTemplate; | ||
42 | +import org.thingsboard.server.queue.kafka.TbKafkaProducerTemplate; | ||
43 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; | 43 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; |
44 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; | 44 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; |
45 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; | 45 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
@@ -82,16 +82,16 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -82,16 +82,16 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
82 | this.transportApiSettings = transportApiSettings; | 82 | this.transportApiSettings = transportApiSettings; |
83 | this.jsInvokeSettings = jsInvokeSettings; | 83 | this.jsInvokeSettings = jsInvokeSettings; |
84 | 84 | ||
85 | - this.coreAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); | ||
86 | - this.ruleEngineAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
87 | - this.jsExecutorAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
88 | - this.transportApiAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
89 | - this.notificationAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | 85 | + this.coreAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); |
86 | + this.ruleEngineAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
87 | + this.jsExecutorAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
88 | + this.transportApiAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
89 | + this.notificationAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | ||
90 | } | 90 | } |
91 | 91 | ||
92 | @Override | 92 | @Override |
93 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { | 93 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
94 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 94 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
95 | requestBuilder.settings(kafkaSettings); | 95 | requestBuilder.settings(kafkaSettings); |
96 | requestBuilder.clientId("tb-core-transport-notifications-" + serviceInfoProvider.getServiceId()); | 96 | requestBuilder.clientId("tb-core-transport-notifications-" + serviceInfoProvider.getServiceId()); |
97 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 97 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -101,7 +101,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -101,7 +101,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
101 | 101 | ||
102 | @Override | 102 | @Override |
103 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 103 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
104 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 104 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
105 | requestBuilder.settings(kafkaSettings); | 105 | requestBuilder.settings(kafkaSettings); |
106 | requestBuilder.clientId("tb-core-rule-engine-" + serviceInfoProvider.getServiceId()); | 106 | requestBuilder.clientId("tb-core-rule-engine-" + serviceInfoProvider.getServiceId()); |
107 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 107 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -111,7 +111,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -111,7 +111,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
111 | 111 | ||
112 | @Override | 112 | @Override |
113 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 113 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
114 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 114 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
115 | requestBuilder.settings(kafkaSettings); | 115 | requestBuilder.settings(kafkaSettings); |
116 | requestBuilder.clientId("tb-core-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); | 116 | requestBuilder.clientId("tb-core-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); |
117 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); | 117 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); |
@@ -121,7 +121,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -121,7 +121,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
121 | 121 | ||
122 | @Override | 122 | @Override |
123 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 123 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
124 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 124 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
125 | requestBuilder.settings(kafkaSettings); | 125 | requestBuilder.settings(kafkaSettings); |
126 | requestBuilder.clientId("tb-core-to-core-" + serviceInfoProvider.getServiceId()); | 126 | requestBuilder.clientId("tb-core-to-core-" + serviceInfoProvider.getServiceId()); |
127 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 127 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -131,7 +131,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -131,7 +131,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
131 | 131 | ||
132 | @Override | 132 | @Override |
133 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 133 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
134 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 134 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
135 | requestBuilder.settings(kafkaSettings); | 135 | requestBuilder.settings(kafkaSettings); |
136 | requestBuilder.clientId("tb-core-to-core-notifications-" + serviceInfoProvider.getServiceId()); | 136 | requestBuilder.clientId("tb-core-to-core-notifications-" + serviceInfoProvider.getServiceId()); |
137 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 137 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -141,7 +141,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -141,7 +141,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
141 | 141 | ||
142 | @Override | 142 | @Override |
143 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { | 143 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { |
144 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 144 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
145 | consumerBuilder.settings(kafkaSettings); | 145 | consumerBuilder.settings(kafkaSettings); |
146 | consumerBuilder.topic(coreSettings.getTopic()); | 146 | consumerBuilder.topic(coreSettings.getTopic()); |
147 | consumerBuilder.clientId("tb-core-consumer-" + serviceInfoProvider.getServiceId()); | 147 | consumerBuilder.clientId("tb-core-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -153,7 +153,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -153,7 +153,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
153 | 153 | ||
154 | @Override | 154 | @Override |
155 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { | 155 | public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
156 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 156 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
157 | consumerBuilder.settings(kafkaSettings); | 157 | consumerBuilder.settings(kafkaSettings); |
158 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName()); | 158 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName()); |
159 | consumerBuilder.clientId("tb-core-notifications-consumer-" + serviceInfoProvider.getServiceId()); | 159 | consumerBuilder.clientId("tb-core-notifications-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -165,7 +165,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -165,7 +165,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
165 | 165 | ||
166 | @Override | 166 | @Override |
167 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { | 167 | public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
168 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 168 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
169 | consumerBuilder.settings(kafkaSettings); | 169 | consumerBuilder.settings(kafkaSettings); |
170 | consumerBuilder.topic(transportApiSettings.getRequestsTopic()); | 170 | consumerBuilder.topic(transportApiSettings.getRequestsTopic()); |
171 | consumerBuilder.clientId("tb-core-transport-api-consumer-" + serviceInfoProvider.getServiceId()); | 171 | consumerBuilder.clientId("tb-core-transport-api-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -177,7 +177,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -177,7 +177,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
177 | 177 | ||
178 | @Override | 178 | @Override |
179 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { | 179 | public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { |
180 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 180 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
181 | requestBuilder.settings(kafkaSettings); | 181 | requestBuilder.settings(kafkaSettings); |
182 | requestBuilder.clientId("tb-core-transport-api-producer-" + serviceInfoProvider.getServiceId()); | 182 | requestBuilder.clientId("tb-core-transport-api-producer-" + serviceInfoProvider.getServiceId()); |
183 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 183 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -188,13 +188,13 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | @@ -188,13 +188,13 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { | ||
188 | @Override | 188 | @Override |
189 | @Bean | 189 | @Bean |
190 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { | 190 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { |
191 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TBKafkaProducerTemplate.builder(); | 191 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TbKafkaProducerTemplate.builder(); |
192 | requestBuilder.settings(kafkaSettings); | 192 | requestBuilder.settings(kafkaSettings); |
193 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); | 193 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); |
194 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); | 194 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); |
195 | requestBuilder.admin(jsExecutorAdmin); | 195 | requestBuilder.admin(jsExecutorAdmin); |
196 | 196 | ||
197 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TBKafkaConsumerTemplate.builder(); | 197 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TbKafkaConsumerTemplate.builder(); |
198 | responseBuilder.settings(kafkaSettings); | 198 | responseBuilder.settings(kafkaSettings); |
199 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); | 199 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); |
200 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); | 200 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); |
@@ -35,9 +35,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | @@ -35,9 +35,9 @@ import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; | ||
35 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; | 35 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
36 | import org.thingsboard.server.queue.discovery.PartitionService; | 36 | import org.thingsboard.server.queue.discovery.PartitionService; |
37 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; | 37 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
38 | -import org.thingsboard.server.queue.kafka.TBKafkaAdmin; | ||
39 | -import org.thingsboard.server.queue.kafka.TBKafkaConsumerTemplate; | ||
40 | -import org.thingsboard.server.queue.kafka.TBKafkaProducerTemplate; | 38 | +import org.thingsboard.server.queue.kafka.TbKafkaAdmin; |
39 | +import org.thingsboard.server.queue.kafka.TbKafkaConsumerTemplate; | ||
40 | +import org.thingsboard.server.queue.kafka.TbKafkaProducerTemplate; | ||
41 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; | 41 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; |
42 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; | 42 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; |
43 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; | 43 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
@@ -76,15 +76,15 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -76,15 +76,15 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
76 | this.ruleEngineSettings = ruleEngineSettings; | 76 | this.ruleEngineSettings = ruleEngineSettings; |
77 | this.jsInvokeSettings = jsInvokeSettings; | 77 | this.jsInvokeSettings = jsInvokeSettings; |
78 | 78 | ||
79 | - this.coreAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); | ||
80 | - this.ruleEngineAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
81 | - this.jsExecutorAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
82 | - this.notificationAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | 79 | + this.coreAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); |
80 | + this.ruleEngineAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
81 | + this.jsExecutorAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getJsExecutorConfigs()); | ||
82 | + this.notificationAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | ||
83 | } | 83 | } |
84 | 84 | ||
85 | @Override | 85 | @Override |
86 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { | 86 | public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
87 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 87 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
88 | requestBuilder.settings(kafkaSettings); | 88 | requestBuilder.settings(kafkaSettings); |
89 | requestBuilder.clientId("tb-rule-engine-transport-notifications-" + serviceInfoProvider.getServiceId()); | 89 | requestBuilder.clientId("tb-rule-engine-transport-notifications-" + serviceInfoProvider.getServiceId()); |
90 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 90 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -94,7 +94,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -94,7 +94,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
94 | 94 | ||
95 | @Override | 95 | @Override |
96 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 96 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
97 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 97 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
98 | requestBuilder.settings(kafkaSettings); | 98 | requestBuilder.settings(kafkaSettings); |
99 | requestBuilder.clientId("tb-rule-engine-to-rule-engine-" + serviceInfoProvider.getServiceId()); | 99 | requestBuilder.clientId("tb-rule-engine-to-rule-engine-" + serviceInfoProvider.getServiceId()); |
100 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 100 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -104,7 +104,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -104,7 +104,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
104 | 104 | ||
105 | @Override | 105 | @Override |
106 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { | 106 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
107 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 107 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
108 | requestBuilder.settings(kafkaSettings); | 108 | requestBuilder.settings(kafkaSettings); |
109 | requestBuilder.clientId("tb-rule-engine-to-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); | 109 | requestBuilder.clientId("tb-rule-engine-to-rule-engine-notifications-" + serviceInfoProvider.getServiceId()); |
110 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); | 110 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); |
@@ -115,7 +115,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -115,7 +115,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
115 | 115 | ||
116 | @Override | 116 | @Override |
117 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 117 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
118 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 118 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
119 | requestBuilder.settings(kafkaSettings); | 119 | requestBuilder.settings(kafkaSettings); |
120 | requestBuilder.clientId("tb-rule-engine-to-core-" + serviceInfoProvider.getServiceId()); | 120 | requestBuilder.clientId("tb-rule-engine-to-core-" + serviceInfoProvider.getServiceId()); |
121 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 121 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -125,7 +125,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -125,7 +125,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
125 | 125 | ||
126 | @Override | 126 | @Override |
127 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { | 127 | public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
128 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 128 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreNotificationMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
129 | requestBuilder.settings(kafkaSettings); | 129 | requestBuilder.settings(kafkaSettings); |
130 | requestBuilder.clientId("tb-rule-engine-to-core-notifications-" + serviceInfoProvider.getServiceId()); | 130 | requestBuilder.clientId("tb-rule-engine-to-core-notifications-" + serviceInfoProvider.getServiceId()); |
131 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 131 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -136,7 +136,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -136,7 +136,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
136 | @Override | 136 | @Override |
137 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { | 137 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
138 | String queueName = configuration.getName(); | 138 | String queueName = configuration.getName(); |
139 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 139 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
140 | consumerBuilder.settings(kafkaSettings); | 140 | consumerBuilder.settings(kafkaSettings); |
141 | consumerBuilder.topic(ruleEngineSettings.getTopic()); | 141 | consumerBuilder.topic(ruleEngineSettings.getTopic()); |
142 | consumerBuilder.clientId("re-" + queueName + "-consumer-" + serviceInfoProvider.getServiceId()); | 142 | consumerBuilder.clientId("re-" + queueName + "-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -148,7 +148,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -148,7 +148,7 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
148 | 148 | ||
149 | @Override | 149 | @Override |
150 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { | 150 | public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
151 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> consumerBuilder = TBKafkaConsumerTemplate.builder(); | 151 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder(); |
152 | consumerBuilder.settings(kafkaSettings); | 152 | consumerBuilder.settings(kafkaSettings); |
153 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName()); | 153 | consumerBuilder.topic(partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName()); |
154 | consumerBuilder.clientId("tb-rule-engine-notifications-consumer-" + serviceInfoProvider.getServiceId()); | 154 | consumerBuilder.clientId("tb-rule-engine-notifications-consumer-" + serviceInfoProvider.getServiceId()); |
@@ -161,13 +161,13 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | @@ -161,13 +161,13 @@ public class KafkaTbRuleEngineQueueFactory implements TbRuleEngineQueueFactory { | ||
161 | @Override | 161 | @Override |
162 | @Bean | 162 | @Bean |
163 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { | 163 | public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { |
164 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TBKafkaProducerTemplate.builder(); | 164 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>> requestBuilder = TbKafkaProducerTemplate.builder(); |
165 | requestBuilder.settings(kafkaSettings); | 165 | requestBuilder.settings(kafkaSettings); |
166 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); | 166 | requestBuilder.clientId("producer-js-invoke-" + serviceInfoProvider.getServiceId()); |
167 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); | 167 | requestBuilder.defaultTopic(jsInvokeSettings.getRequestTopic()); |
168 | requestBuilder.admin(jsExecutorAdmin); | 168 | requestBuilder.admin(jsExecutorAdmin); |
169 | 169 | ||
170 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TBKafkaConsumerTemplate.builder(); | 170 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> responseBuilder = TbKafkaConsumerTemplate.builder(); |
171 | responseBuilder.settings(kafkaSettings); | 171 | responseBuilder.settings(kafkaSettings); |
172 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); | 172 | responseBuilder.topic(jsInvokeSettings.getResponseTopic() + "." + serviceInfoProvider.getServiceId()); |
173 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); | 173 | responseBuilder.clientId("js-" + serviceInfoProvider.getServiceId()); |
@@ -30,9 +30,9 @@ import org.thingsboard.server.queue.TbQueueRequestTemplate; | @@ -30,9 +30,9 @@ import org.thingsboard.server.queue.TbQueueRequestTemplate; | ||
30 | import org.thingsboard.server.queue.common.DefaultTbQueueRequestTemplate; | 30 | import org.thingsboard.server.queue.common.DefaultTbQueueRequestTemplate; |
31 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; | 31 | import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
32 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; | 32 | import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
33 | -import org.thingsboard.server.queue.kafka.TBKafkaAdmin; | ||
34 | -import org.thingsboard.server.queue.kafka.TBKafkaConsumerTemplate; | ||
35 | -import org.thingsboard.server.queue.kafka.TBKafkaProducerTemplate; | 33 | +import org.thingsboard.server.queue.kafka.TbKafkaAdmin; |
34 | +import org.thingsboard.server.queue.kafka.TbKafkaConsumerTemplate; | ||
35 | +import org.thingsboard.server.queue.kafka.TbKafkaProducerTemplate; | ||
36 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; | 36 | import org.thingsboard.server.queue.kafka.TbKafkaSettings; |
37 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; | 37 | import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; |
38 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; | 38 | import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
@@ -71,21 +71,21 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | @@ -71,21 +71,21 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | ||
71 | this.transportApiSettings = transportApiSettings; | 71 | this.transportApiSettings = transportApiSettings; |
72 | this.transportNotificationSettings = transportNotificationSettings; | 72 | this.transportNotificationSettings = transportNotificationSettings; |
73 | 73 | ||
74 | - this.coreAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); | ||
75 | - this.ruleEngineAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
76 | - this.transportApiAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
77 | - this.notificationAdmin = new TBKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | 74 | + this.coreAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getCoreConfigs()); |
75 | + this.ruleEngineAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getRuleEngineConfigs()); | ||
76 | + this.transportApiAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getTransportApiConfigs()); | ||
77 | + this.notificationAdmin = new TbKafkaAdmin(kafkaSettings, kafkaTopicConfigs.getNotificationsConfigs()); | ||
78 | } | 78 | } |
79 | 79 | ||
80 | @Override | 80 | @Override |
81 | public TbQueueRequestTemplate<TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiRequestTemplate() { | 81 | public TbQueueRequestTemplate<TbProtoQueueMsg<TransportApiRequestMsg>, TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiRequestTemplate() { |
82 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 82 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<TransportApiRequestMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
83 | requestBuilder.settings(kafkaSettings); | 83 | requestBuilder.settings(kafkaSettings); |
84 | requestBuilder.clientId("transport-api-request-" + serviceInfoProvider.getServiceId()); | 84 | requestBuilder.clientId("transport-api-request-" + serviceInfoProvider.getServiceId()); |
85 | requestBuilder.defaultTopic(transportApiSettings.getRequestsTopic()); | 85 | requestBuilder.defaultTopic(transportApiSettings.getRequestsTopic()); |
86 | requestBuilder.admin(transportApiAdmin); | 86 | requestBuilder.admin(transportApiAdmin); |
87 | 87 | ||
88 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> responseBuilder = TBKafkaConsumerTemplate.builder(); | 88 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<TransportApiResponseMsg>> responseBuilder = TbKafkaConsumerTemplate.builder(); |
89 | responseBuilder.settings(kafkaSettings); | 89 | responseBuilder.settings(kafkaSettings); |
90 | responseBuilder.topic(transportApiSettings.getResponsesTopic() + "." + serviceInfoProvider.getServiceId()); | 90 | responseBuilder.topic(transportApiSettings.getResponsesTopic() + "." + serviceInfoProvider.getServiceId()); |
91 | responseBuilder.clientId("transport-api-response-" + serviceInfoProvider.getServiceId()); | 91 | responseBuilder.clientId("transport-api-response-" + serviceInfoProvider.getServiceId()); |
@@ -106,7 +106,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | @@ -106,7 +106,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | ||
106 | 106 | ||
107 | @Override | 107 | @Override |
108 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { | 108 | public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
109 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 109 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToRuleEngineMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
110 | requestBuilder.settings(kafkaSettings); | 110 | requestBuilder.settings(kafkaSettings); |
111 | requestBuilder.clientId("transport-node-rule-engine-" + serviceInfoProvider.getServiceId()); | 111 | requestBuilder.clientId("transport-node-rule-engine-" + serviceInfoProvider.getServiceId()); |
112 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); | 112 | requestBuilder.defaultTopic(ruleEngineSettings.getTopic()); |
@@ -116,7 +116,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | @@ -116,7 +116,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | ||
116 | 116 | ||
117 | @Override | 117 | @Override |
118 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { | 118 | public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
119 | - TBKafkaProducerTemplate.TBKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TBKafkaProducerTemplate.builder(); | 119 | + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToCoreMsg>> requestBuilder = TbKafkaProducerTemplate.builder(); |
120 | requestBuilder.settings(kafkaSettings); | 120 | requestBuilder.settings(kafkaSettings); |
121 | requestBuilder.clientId("transport-node-core-" + serviceInfoProvider.getServiceId()); | 121 | requestBuilder.clientId("transport-node-core-" + serviceInfoProvider.getServiceId()); |
122 | requestBuilder.defaultTopic(coreSettings.getTopic()); | 122 | requestBuilder.defaultTopic(coreSettings.getTopic()); |
@@ -126,7 +126,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | @@ -126,7 +126,7 @@ public class KafkaTbTransportQueueFactory implements TbTransportQueueFactory { | ||
126 | 126 | ||
127 | @Override | 127 | @Override |
128 | public TbQueueConsumer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsConsumer() { | 128 | public TbQueueConsumer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsConsumer() { |
129 | - TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> responseBuilder = TBKafkaConsumerTemplate.builder(); | 129 | + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToTransportMsg>> responseBuilder = TbKafkaConsumerTemplate.builder(); |
130 | responseBuilder.settings(kafkaSettings); | 130 | responseBuilder.settings(kafkaSettings); |
131 | responseBuilder.topic(transportNotificationSettings.getNotificationsTopic() + "." + serviceInfoProvider.getServiceId()); | 131 | responseBuilder.topic(transportNotificationSettings.getNotificationsTopic() + "." + serviceInfoProvider.getServiceId()); |
132 | responseBuilder.clientId("transport-api-notifications-" + serviceInfoProvider.getServiceId()); | 132 | responseBuilder.clientId("transport-api-notifications-" + serviceInfoProvider.getServiceId()); |
@@ -121,6 +121,11 @@ public class TbPubSubAdmin implements TbQueueAdmin { | @@ -121,6 +121,11 @@ public class TbPubSubAdmin implements TbQueueAdmin { | ||
121 | } | 121 | } |
122 | } | 122 | } |
123 | 123 | ||
124 | + @Override | ||
125 | + public void destroy() { | ||
126 | + | ||
127 | + } | ||
128 | + | ||
124 | private void createSubscriptionIfNotExists(String partition, ProjectTopicName topicName) { | 129 | private void createSubscriptionIfNotExists(String partition, ProjectTopicName topicName) { |
125 | ProjectSubscriptionName subscriptionName = | 130 | ProjectSubscriptionName subscriptionName = |
126 | ProjectSubscriptionName.of(pubSubSettings.getProjectId(), partition); | 131 | ProjectSubscriptionName.of(pubSubSettings.getProjectId(), partition); |
@@ -14,15 +14,14 @@ | @@ -14,15 +14,14 @@ | ||
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | package org.thingsboard.server.queue.rabbitmq; | 16 | package org.thingsboard.server.queue.rabbitmq; |
17 | + | ||
17 | import com.rabbitmq.client.Channel; | 18 | import com.rabbitmq.client.Channel; |
18 | import com.rabbitmq.client.Connection; | 19 | import com.rabbitmq.client.Connection; |
19 | - | ||
20 | import lombok.extern.slf4j.Slf4j; | 20 | import lombok.extern.slf4j.Slf4j; |
21 | import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | 21 | import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
22 | import org.springframework.stereotype.Component; | 22 | import org.springframework.stereotype.Component; |
23 | import org.thingsboard.server.queue.TbQueueAdmin; | 23 | import org.thingsboard.server.queue.TbQueueAdmin; |
24 | 24 | ||
25 | -import javax.annotation.PreDestroy; | ||
26 | import java.io.IOException; | 25 | import java.io.IOException; |
27 | import java.util.concurrent.TimeoutException; | 26 | import java.util.concurrent.TimeoutException; |
28 | 27 | ||
@@ -62,8 +61,8 @@ public class TbRabbitMqAdmin implements TbQueueAdmin { | @@ -62,8 +61,8 @@ public class TbRabbitMqAdmin implements TbQueueAdmin { | ||
62 | } | 61 | } |
63 | } | 62 | } |
64 | 63 | ||
65 | - @PreDestroy | ||
66 | - private void destroy() { | 64 | + @Override |
65 | + public void destroy() { | ||
67 | if (channel != null) { | 66 | if (channel != null) { |
68 | try { | 67 | try { |
69 | channel.close(); | 68 | channel.close(); |
@@ -21,45 +21,56 @@ import com.amazonaws.auth.BasicAWSCredentials; | @@ -21,45 +21,56 @@ import com.amazonaws.auth.BasicAWSCredentials; | ||
21 | import com.amazonaws.services.sqs.AmazonSQS; | 21 | import com.amazonaws.services.sqs.AmazonSQS; |
22 | import com.amazonaws.services.sqs.AmazonSQSClientBuilder; | 22 | import com.amazonaws.services.sqs.AmazonSQSClientBuilder; |
23 | import com.amazonaws.services.sqs.model.CreateQueueRequest; | 23 | import com.amazonaws.services.sqs.model.CreateQueueRequest; |
24 | -import com.amazonaws.services.sqs.model.QueueAttributeName; | ||
25 | import org.thingsboard.server.queue.TbQueueAdmin; | 24 | import org.thingsboard.server.queue.TbQueueAdmin; |
26 | 25 | ||
27 | -import java.util.HashMap; | ||
28 | import java.util.Map; | 26 | import java.util.Map; |
27 | +import java.util.Set; | ||
28 | +import java.util.concurrent.ConcurrentHashMap; | ||
29 | +import java.util.stream.Collectors; | ||
29 | 30 | ||
30 | public class TbAwsSqsAdmin implements TbQueueAdmin { | 31 | public class TbAwsSqsAdmin implements TbQueueAdmin { |
31 | 32 | ||
32 | - private final TbAwsSqsSettings sqsSettings; | ||
33 | - private final Map<String, String> attributes = new HashMap<>(); | ||
34 | - private final AWSStaticCredentialsProvider credProvider; | 33 | + private final Map<String, String> attributes; |
34 | + private final AmazonSQS sqsClient; | ||
35 | + private final Set<String> queues; | ||
35 | 36 | ||
36 | - public TbAwsSqsAdmin(TbAwsSqsSettings sqsSettings) { | ||
37 | - this.sqsSettings = sqsSettings; | 37 | + public TbAwsSqsAdmin(TbAwsSqsSettings sqsSettings, Map<String, String> attributes) { |
38 | + this.attributes = attributes; | ||
38 | 39 | ||
39 | AWSCredentials awsCredentials = new BasicAWSCredentials(sqsSettings.getAccessKeyId(), sqsSettings.getSecretAccessKey()); | 40 | AWSCredentials awsCredentials = new BasicAWSCredentials(sqsSettings.getAccessKeyId(), sqsSettings.getSecretAccessKey()); |
40 | - this.credProvider = new AWSStaticCredentialsProvider(awsCredentials); | 41 | + sqsClient = AmazonSQSClientBuilder.standard() |
42 | + .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) | ||
43 | + .withRegion(sqsSettings.getRegion()) | ||
44 | + .build(); | ||
41 | 45 | ||
42 | - attributes.put("FifoQueue", "true"); | ||
43 | - attributes.put("ContentBasedDeduplication", "true"); | ||
44 | - attributes.put(QueueAttributeName.VisibilityTimeout.toString(), sqsSettings.getVisibilityTimeout()); | 46 | + queues = sqsClient |
47 | + .listQueues() | ||
48 | + .getQueueUrls() | ||
49 | + .stream() | ||
50 | + .map(this::getQueueNameFromUrl) | ||
51 | + .collect(Collectors.toCollection(ConcurrentHashMap::newKeySet)); | ||
45 | } | 52 | } |
46 | 53 | ||
47 | @Override | 54 | @Override |
48 | public void createTopicIfNotExists(String topic) { | 55 | public void createTopicIfNotExists(String topic) { |
49 | - AmazonSQS sqsClient = AmazonSQSClientBuilder.standard() | ||
50 | - .withCredentials(credProvider) | ||
51 | - .withRegion(sqsSettings.getRegion()) | ||
52 | - .build(); | 56 | + String queueName = topic.replaceAll("\\.", "_") + ".fifo"; |
57 | + if (queues.contains(queueName)) { | ||
58 | + return; | ||
59 | + } | ||
60 | + final CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName).withAttributes(attributes); | ||
61 | + String queueUrl = sqsClient.createQueue(createQueueRequest).getQueueUrl(); | ||
62 | + queues.add(getQueueNameFromUrl(queueUrl)); | ||
63 | + } | ||
64 | + | ||
65 | + private String getQueueNameFromUrl(String queueUrl) { | ||
66 | + int delimiterIndex = queueUrl.lastIndexOf("/"); | ||
67 | + return queueUrl.substring(delimiterIndex + 1); | ||
68 | + } | ||
53 | 69 | ||
54 | - final CreateQueueRequest createQueueRequest = | ||
55 | - new CreateQueueRequest(topic.replaceAll("\\.", "_") + ".fifo") | ||
56 | - .withAttributes(attributes); | ||
57 | - try { | ||
58 | - sqsClient.createQueue(createQueueRequest); | ||
59 | - } finally { | ||
60 | - if (sqsClient != null) { | ||
61 | - sqsClient.shutdown(); | ||
62 | - } | 70 | + @Override |
71 | + public void destroy() { | ||
72 | + if (sqsClient != null) { | ||
73 | + sqsClient.shutdown(); | ||
63 | } | 74 | } |
64 | } | 75 | } |
65 | } | 76 | } |
1 | +/** | ||
2 | + * Copyright © 2016-2020 The Thingsboard Authors | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.thingsboard.server.queue.sqs; | ||
17 | + | ||
18 | +import com.amazonaws.services.sqs.model.QueueAttributeName; | ||
19 | +import lombok.Getter; | ||
20 | +import org.springframework.beans.factory.annotation.Value; | ||
21 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; | ||
22 | +import org.springframework.stereotype.Component; | ||
23 | + | ||
24 | +import javax.annotation.PostConstruct; | ||
25 | +import java.util.HashMap; | ||
26 | +import java.util.Map; | ||
27 | + | ||
28 | +@Component | ||
29 | +@ConditionalOnExpression("'${queue.type:null}'=='aws-sqs'") | ||
30 | +public class TbAwsSqsQueueAttributes { | ||
31 | + @Value("${queue.aws-sqs.queue-properties.core}") | ||
32 | + private String coreProperties; | ||
33 | + @Value("${queue.aws-sqs.queue-properties.rule-engine}") | ||
34 | + private String ruleEngineProperties; | ||
35 | + @Value("${queue.aws-sqs.queue-properties.transport-api}") | ||
36 | + private String transportApiProperties; | ||
37 | + @Value("${queue.aws-sqs.queue-properties.notifications}") | ||
38 | + private String notificationsProperties; | ||
39 | + @Value("${queue.aws-sqs.queue-properties.js-executor}") | ||
40 | + private String jsExecutorProperties; | ||
41 | + | ||
42 | + @Getter | ||
43 | + private Map<String, String> coreAttributes; | ||
44 | + @Getter | ||
45 | + private Map<String, String> ruleEngineAttributes; | ||
46 | + @Getter | ||
47 | + private Map<String, String> transportApiAttributes; | ||
48 | + @Getter | ||
49 | + private Map<String, String> notificationsAttributes; | ||
50 | + @Getter | ||
51 | + private Map<String, String> jsExecutorAttributes; | ||
52 | + | ||
53 | + private final Map<String, String> defaultAttributes = new HashMap<>(); | ||
54 | + | ||
55 | + @PostConstruct | ||
56 | + private void init() { | ||
57 | + defaultAttributes.put(QueueAttributeName.FifoQueue.toString(), "true"); | ||
58 | + defaultAttributes.put(QueueAttributeName.ContentBasedDeduplication.toString(), "true"); | ||
59 | + | ||
60 | + coreAttributes = getConfigs(coreProperties); | ||
61 | + ruleEngineAttributes = getConfigs(ruleEngineProperties); | ||
62 | + transportApiAttributes = getConfigs(transportApiProperties); | ||
63 | + notificationsAttributes = getConfigs(notificationsProperties); | ||
64 | + jsExecutorAttributes = getConfigs(jsExecutorProperties); | ||
65 | + } | ||
66 | + | ||
67 | + private Map<String, String> getConfigs(String properties) { | ||
68 | + Map<String, String> configs = new HashMap<>(); | ||
69 | + for (String property : properties.split(";")) { | ||
70 | + int delimiterPosition = property.indexOf(":"); | ||
71 | + String key = property.substring(0, delimiterPosition); | ||
72 | + String value = property.substring(delimiterPosition + 1); | ||
73 | + validateAttributeName(key); | ||
74 | + configs.put(key, value); | ||
75 | + } | ||
76 | + configs.putAll(defaultAttributes); | ||
77 | + return configs; | ||
78 | + } | ||
79 | + | ||
80 | + private void validateAttributeName(String key) { | ||
81 | + QueueAttributeName.fromValue(key); | ||
82 | + } | ||
83 | +} |
@@ -39,6 +39,4 @@ public class TbAwsSqsSettings { | @@ -39,6 +39,4 @@ public class TbAwsSqsSettings { | ||
39 | @Value("${queue.aws_sqs.threads_per_topic}") | 39 | @Value("${queue.aws_sqs.threads_per_topic}") |
40 | private int threadsPerTopic; | 40 | private int threadsPerTopic; |
41 | 41 | ||
42 | - @Value("${queue.aws_sqs.visibility_timeout}") | ||
43 | - private String visibilityTimeout; | ||
44 | } | 42 | } |
@@ -62,7 +62,13 @@ queue: | @@ -62,7 +62,13 @@ queue: | ||
62 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" | 62 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" |
63 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" | 63 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" |
64 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" | 64 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" |
65 | - visibility_timeout: "${TB_QUEUE_AWS_SQS_VISIBILITY_TIMEOUT:30}" #In seconds. If messages wont commit in this time, messages will poll again | 65 | + queue-properties: |
66 | + rule-engine: "${TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
67 | + core: "${TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
68 | + transport-api: "${TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
69 | + notifications: "${TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
70 | + js-executor: "${TB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
71 | + # VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds | ||
66 | pubsub: | 72 | pubsub: |
67 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" | 73 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" |
68 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" | 74 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" |
@@ -63,7 +63,13 @@ queue: | @@ -63,7 +63,13 @@ queue: | ||
63 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" | 63 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" |
64 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" | 64 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" |
65 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" | 65 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" |
66 | - visibility_timeout: "${TB_QUEUE_AWS_SQS_VISIBILITY_TIMEOUT:30}" #In seconds. If messages wont commit in this time, messages will poll again | 66 | + queue-properties: |
67 | + rule-engine: "${TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
68 | + core: "${TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
69 | + transport-api: "${TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
70 | + notifications: "${TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
71 | + js-executor: "${TB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
72 | + # VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds | ||
67 | pubsub: | 73 | pubsub: |
68 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" | 74 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" |
69 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" | 75 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" |
@@ -93,7 +93,13 @@ queue: | @@ -93,7 +93,13 @@ queue: | ||
93 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" | 93 | secret_access_key: "${TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY:YOUR_SECRET}" |
94 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" | 94 | region: "${TB_QUEUE_AWS_SQS_REGION:YOUR_REGION}" |
95 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" | 95 | threads_per_topic: "${TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC:1}" |
96 | - visibility_timeout: "${TB_QUEUE_AWS_SQS_VISIBILITY_TIMEOUT:30}" #In seconds. If messages wont commit in this time, messages will poll again | 96 | + queue-properties: |
97 | + rule-engine: "${TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
98 | + core: "${TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
99 | + transport-api: "${TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
100 | + notifications: "${TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
101 | + js-executor: "${TB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIES:VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800}" | ||
102 | + # VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds | ||
97 | pubsub: | 103 | pubsub: |
98 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" | 104 | project_id: "${TB_QUEUE_PUBSUB_PROJECT_ID:YOUR_PROJECT_ID}" |
99 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" | 105 | service_account: "${TB_QUEUE_PUBSUB_SERVICE_ACCOUNT:YOUR_SERVICE_ACCOUNT}" |