|
|
@ -38,6 +38,7 @@ import org.thingsboard.server.queue.pubsub.TbPubSubAdmin; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubConsumerTemplate; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubConsumerTemplate; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubProducerTemplate; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubProducerTemplate; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubSettings; |
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubSettings; |
|
|
|
|
|
import org.thingsboard.server.queue.pubsub.TbPubSubSubscriptionSettings; |
|
|
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; |
|
|
@ -53,88 +54,99 @@ public class PubSubMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng |
|
|
private final TbQueueRuleEngineSettings ruleEngineSettings; |
|
|
private final TbQueueRuleEngineSettings ruleEngineSettings; |
|
|
private final TbQueueTransportApiSettings transportApiSettings; |
|
|
private final TbQueueTransportApiSettings transportApiSettings; |
|
|
private final TbQueueTransportNotificationSettings transportNotificationSettings; |
|
|
private final TbQueueTransportNotificationSettings transportNotificationSettings; |
|
|
private final TbQueueAdmin admin; |
|
|
|
|
|
private final PartitionService partitionService; |
|
|
private final PartitionService partitionService; |
|
|
private final TbServiceInfoProvider serviceInfoProvider; |
|
|
private final TbServiceInfoProvider serviceInfoProvider; |
|
|
|
|
|
|
|
|
|
|
|
private final TbQueueAdmin coreAdmin; |
|
|
|
|
|
private final TbQueueAdmin ruleEngineAdmin; |
|
|
|
|
|
private final TbQueueAdmin jsExecutorAdmin; |
|
|
|
|
|
private final TbQueueAdmin transportApiAdmin; |
|
|
|
|
|
private final TbQueueAdmin notificationAdmin; |
|
|
|
|
|
|
|
|
public PubSubMonolithQueueFactory(TbPubSubSettings pubSubSettings, |
|
|
public PubSubMonolithQueueFactory(TbPubSubSettings pubSubSettings, |
|
|
TbQueueCoreSettings coreSettings, |
|
|
TbQueueCoreSettings coreSettings, |
|
|
TbQueueRuleEngineSettings ruleEngineSettings, |
|
|
TbQueueRuleEngineSettings ruleEngineSettings, |
|
|
TbQueueTransportApiSettings transportApiSettings, |
|
|
TbQueueTransportApiSettings transportApiSettings, |
|
|
TbQueueTransportNotificationSettings transportNotificationSettings, |
|
|
TbQueueTransportNotificationSettings transportNotificationSettings, |
|
|
PartitionService partitionService, |
|
|
PartitionService partitionService, |
|
|
TbServiceInfoProvider serviceInfoProvider) { |
|
|
TbServiceInfoProvider serviceInfoProvider, |
|
|
|
|
|
TbPubSubSubscriptionSettings pubSubSubscriptionSettings) { |
|
|
this.pubSubSettings = pubSubSettings; |
|
|
this.pubSubSettings = pubSubSettings; |
|
|
this.coreSettings = coreSettings; |
|
|
this.coreSettings = coreSettings; |
|
|
this.ruleEngineSettings = ruleEngineSettings; |
|
|
this.ruleEngineSettings = ruleEngineSettings; |
|
|
this.transportApiSettings = transportApiSettings; |
|
|
this.transportApiSettings = transportApiSettings; |
|
|
this.transportNotificationSettings = transportNotificationSettings; |
|
|
this.transportNotificationSettings = transportNotificationSettings; |
|
|
this.admin = new TbPubSubAdmin(pubSubSettings); |
|
|
|
|
|
this.partitionService = partitionService; |
|
|
this.partitionService = partitionService; |
|
|
this.serviceInfoProvider = serviceInfoProvider; |
|
|
this.serviceInfoProvider = serviceInfoProvider; |
|
|
|
|
|
|
|
|
|
|
|
this.coreAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getCoreSettings()); |
|
|
|
|
|
this.ruleEngineAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getRuleEngineSettings()); |
|
|
|
|
|
this.jsExecutorAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getJsExecutorSettings()); |
|
|
|
|
|
this.transportApiAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getTransportApiSettings()); |
|
|
|
|
|
this.notificationAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getNotificationsSettings()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToTransportMsg>> createTransportNotificationsMsgProducer() { |
|
|
return new TbPubSubProducerTemplate<>(admin, pubSubSettings, transportNotificationSettings.getNotificationsTopic()); |
|
|
return new TbPubSubProducerTemplate<>(notificationAdmin, pubSubSettings, transportNotificationSettings.getNotificationsTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineMsg>> createRuleEngineMsgProducer() { |
|
|
return new TbPubSubProducerTemplate<>(admin, pubSubSettings, ruleEngineSettings.getTopic()); |
|
|
return new TbPubSubProducerTemplate<>(ruleEngineAdmin, pubSubSettings, ruleEngineSettings.getTopic()); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> createRuleEngineNotificationsMsgProducer() { |
|
|
return new TbPubSubProducerTemplate<>(admin, pubSubSettings, ruleEngineSettings.getTopic()); |
|
|
return new TbPubSubProducerTemplate<>(ruleEngineAdmin, pubSubSettings, ruleEngineSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreMsg>> createTbCoreMsgProducer() { |
|
|
return new TbPubSubProducerTemplate<>(admin, pubSubSettings, coreSettings.getTopic()); |
|
|
return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
|
|
public TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
|
|
return new TbPubSubProducerTemplate<>(admin, pubSubSettings, coreSettings.getTopic()); |
|
|
return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
|
|
public TbQueueConsumer<TbProtoQueueMsg<ToRuleEngineMsg>> createToRuleEngineMsgConsumer(TbRuleEngineQueueConfiguration configuration) { |
|
|
return new TbPubSubConsumerTemplate<>(admin, pubSubSettings, ruleEngineSettings.getTopic(), |
|
|
return new TbPubSubConsumerTemplate<>(ruleEngineAdmin, pubSubSettings, 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 TbPubSubConsumerTemplate<>(admin, pubSubSettings, |
|
|
return new TbPubSubConsumerTemplate<>(notificationAdmin, pubSubSettings, |
|
|
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 TbPubSubConsumerTemplate<>(admin, pubSubSettings, coreSettings.getTopic(), |
|
|
return new TbPubSubConsumerTemplate<>(coreAdmin, pubSubSettings, 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 TbPubSubConsumerTemplate<>(admin, pubSubSettings, |
|
|
return new TbPubSubConsumerTemplate<>(notificationAdmin, pubSubSettings, |
|
|
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 TbPubSubConsumerTemplate<>(admin, pubSubSettings, transportApiSettings.getRequestsTopic(), |
|
|
return new TbPubSubConsumerTemplate<>(transportApiAdmin, pubSubSettings, 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 TbPubSubProducerTemplate<>(admin, pubSubSettings, transportApiSettings.getResponsesTopic()); |
|
|
return new TbPubSubProducerTemplate<>(transportApiAdmin, pubSubSettings, transportApiSettings.getResponsesTopic()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
|