|
|
@ -30,19 +30,25 @@ import org.thingsboard.server.queue.TbQueueAdmin; |
|
|
import org.thingsboard.server.queue.TbQueueConsumer; |
|
|
import org.thingsboard.server.queue.TbQueueConsumer; |
|
|
import org.thingsboard.server.queue.TbQueueProducer; |
|
|
import org.thingsboard.server.queue.TbQueueProducer; |
|
|
import org.thingsboard.server.queue.TbQueueRequestTemplate; |
|
|
import org.thingsboard.server.queue.TbQueueRequestTemplate; |
|
|
|
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusAdmin; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusConsumerTemplate; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusConsumerTemplate; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusProducerTemplate; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusProducerTemplate; |
|
|
|
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusQueueConfigs; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusSettings; |
|
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusSettings; |
|
|
import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; |
|
|
import org.thingsboard.server.queue.common.TbProtoJsQueueMsg; |
|
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
|
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
|
|
import org.thingsboard.server.queue.discovery.PartitionService; |
|
|
import org.thingsboard.server.queue.discovery.PartitionService; |
|
|
import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
|
|
import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; |
|
|
|
|
|
import org.thingsboard.server.queue.kafka.TbKafkaAdmin; |
|
|
|
|
|
import org.thingsboard.server.queue.kafka.TbKafkaTopicConfigs; |
|
|
import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueRuleEngineSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueRuleEngineSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueTransportApiSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSettings; |
|
|
import org.thingsboard.server.queue.settings.TbQueueTransportNotificationSettings; |
|
|
import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; |
|
|
import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; |
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.PreDestroy; |
|
|
|
|
|
|
|
|
@Component |
|
|
@Component |
|
|
@ConditionalOnExpression("'${queue.type:null}'=='service-bus' && '${service.type:null}'=='monolith'") |
|
|
@ConditionalOnExpression("'${queue.type:null}'=='service-bus' && '${service.type:null}'=='monolith'") |
|
|
public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngineQueueFactory { |
|
|
public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngineQueueFactory { |
|
|
@ -54,7 +60,12 @@ public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRul |
|
|
private final TbQueueTransportApiSettings transportApiSettings; |
|
|
private final TbQueueTransportApiSettings transportApiSettings; |
|
|
private final TbQueueTransportNotificationSettings transportNotificationSettings; |
|
|
private final TbQueueTransportNotificationSettings transportNotificationSettings; |
|
|
private final TbServiceBusSettings serviceBusSettings; |
|
|
private final TbServiceBusSettings serviceBusSettings; |
|
|
private final TbQueueAdmin admin; |
|
|
|
|
|
|
|
|
private final TbQueueAdmin coreAdmin; |
|
|
|
|
|
private final TbQueueAdmin ruleEngineAdmin; |
|
|
|
|
|
private final TbQueueAdmin jsExecutorAdmin; |
|
|
|
|
|
private final TbQueueAdmin transportApiAdmin; |
|
|
|
|
|
private final TbQueueAdmin notificationAdmin; |
|
|
|
|
|
|
|
|
public ServiceBusMonolithQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, |
|
|
public ServiceBusMonolithQueueFactory(PartitionService partitionService, TbQueueCoreSettings coreSettings, |
|
|
TbQueueRuleEngineSettings ruleEngineSettings, |
|
|
TbQueueRuleEngineSettings ruleEngineSettings, |
|
|
@ -62,7 +73,7 @@ public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRul |
|
|
TbQueueTransportApiSettings transportApiSettings, |
|
|
TbQueueTransportApiSettings transportApiSettings, |
|
|
TbQueueTransportNotificationSettings transportNotificationSettings, |
|
|
TbQueueTransportNotificationSettings transportNotificationSettings, |
|
|
TbServiceBusSettings serviceBusSettings, |
|
|
TbServiceBusSettings serviceBusSettings, |
|
|
TbQueueAdmin admin) { |
|
|
TbServiceBusQueueConfigs serviceBusQueueConfigs) { |
|
|
this.partitionService = partitionService; |
|
|
this.partitionService = partitionService; |
|
|
this.coreSettings = coreSettings; |
|
|
this.coreSettings = coreSettings; |
|
|
this.serviceInfoProvider = serviceInfoProvider; |
|
|
this.serviceInfoProvider = serviceInfoProvider; |
|
|
@ -70,73 +81,97 @@ public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRul |
|
|
this.transportApiSettings = transportApiSettings; |
|
|
this.transportApiSettings = transportApiSettings; |
|
|
this.transportNotificationSettings = transportNotificationSettings; |
|
|
this.transportNotificationSettings = transportNotificationSettings; |
|
|
this.serviceBusSettings = serviceBusSettings; |
|
|
this.serviceBusSettings = serviceBusSettings; |
|
|
this.admin = admin; |
|
|
|
|
|
|
|
|
this.coreAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getCoreConfigs()); |
|
|
|
|
|
this.ruleEngineAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getRuleEngineConfigs()); |
|
|
|
|
|
this.jsExecutorAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getJsExecutorConfigs()); |
|
|
|
|
|
this.transportApiAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getTransportApiConfigs()); |
|
|
|
|
|
this.notificationAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getNotificationsConfigs()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, transportNotificationSettings.getNotificationsTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(notificationAdmin, serviceBusSettings, transportNotificationSettings.getNotificationsTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, ruleEngineSettings.getTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(ruleEngineAdmin, serviceBusSettings, ruleEngineSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, ruleEngineSettings.getTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(ruleEngineAdmin, serviceBusSettings, ruleEngineSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, coreSettings.getTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, coreSettings.getTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
|
|
return new TbServiceBusConsumerTemplate<>(admin, serviceBusSettings, ruleEngineSettings.getTopic(), |
|
|
return new TbServiceBusConsumerTemplate<>(ruleEngineAdmin, serviceBusSettings, ruleEngineSettings.getTopic(), |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createToRuleEngineNotificationsMsgConsumer() { |
|
|
return new TbServiceBusConsumerTemplate<>(admin, serviceBusSettings, |
|
|
return new TbServiceBusConsumerTemplate<>(notificationAdmin, serviceBusSettings, |
|
|
partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
|
|
partitionService.getNotificationsTopic(ServiceType.TB_RULE_ENGINE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToRuleEngineNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> createToCoreMsgConsumer() { |
|
|
return new TbServiceBusConsumerTemplate<>(admin, serviceBusSettings, coreSettings.getTopic(), |
|
|
return new TbServiceBusConsumerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getTopic(), |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToCoreNotificationMsg>> createToCoreNotificationsMsgConsumer() { |
|
|
return new TbServiceBusConsumerTemplate<>(admin, serviceBusSettings, |
|
|
return new TbServiceBusConsumerTemplate<>(notificationAdmin, serviceBusSettings, |
|
|
partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
|
|
partitionService.getNotificationsTopic(ServiceType.TB_CORE, serviceInfoProvider.getServiceId()).getFullTopicName(), |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), ToCoreNotificationMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<TransportApiRequestMsg>> createTransportApiRequestConsumer() { |
|
|
return new TbServiceBusConsumerTemplate<>(admin, serviceBusSettings, transportApiSettings.getRequestsTopic(), |
|
|
return new TbServiceBusConsumerTemplate<>(transportApiAdmin, serviceBusSettings, transportApiSettings.getRequestsTopic(), |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportApiRequestMsg.parseFrom(msg.getData()), msg.getHeaders())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<TransportApiResponseMsg>> createTransportApiResponseProducer() { |
|
|
return new TbServiceBusProducerTemplate<>(admin, serviceBusSettings, transportApiSettings.getResponsesTopic()); |
|
|
return new TbServiceBusProducerTemplate<>(transportApiAdmin, serviceBusSettings, transportApiSettings.getResponsesTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { |
|
|
public TbQueueRequestTemplate<TbProtoJsQueueMsg<JsInvokeProtos.RemoteJsRequest>, TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> createRemoteJsRequestTemplate() { |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@PreDestroy |
|
|
|
|
|
private void destroy() { |
|
|
|
|
|
if (coreAdmin != null) { |
|
|
|
|
|
coreAdmin.destroy(); |
|
|
|
|
|
} |
|
|
|
|
|
if (ruleEngineAdmin != null) { |
|
|
|
|
|
ruleEngineAdmin.destroy(); |
|
|
|
|
|
} |
|
|
|
|
|
if (jsExecutorAdmin != null) { |
|
|
|
|
|
jsExecutorAdmin.destroy(); |
|
|
|
|
|
} |
|
|
|
|
|
if (transportApiAdmin != null) { |
|
|
|
|
|
transportApiAdmin.destroy(); |
|
|
|
|
|
} |
|
|
|
|
|
if (notificationAdmin != null) { |
|
|
|
|
|
notificationAdmin.destroy(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|