Browse Source
Add version control queue factory realizations for other QueueFactoriespull/6641/head
committed by
GitHub
12 changed files with 456 additions and 15 deletions
@ -0,0 +1,91 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2022 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
* you may not use this file except in compliance with the License. |
||||
|
* You may obtain a copy of the License at |
||||
|
* |
||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
* |
||||
|
* Unless required by applicable law or agreed to in writing, software |
||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
* See the License for the specific language governing permissions and |
||||
|
* limitations under the License. |
||||
|
*/ |
||||
|
package org.thingsboard.server.queue.provider; |
||||
|
|
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.thingsboard.server.gen.transport.TransportProtos; |
||||
|
import org.thingsboard.server.queue.TbQueueAdmin; |
||||
|
import org.thingsboard.server.queue.TbQueueConsumer; |
||||
|
import org.thingsboard.server.queue.TbQueueProducer; |
||||
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueVersionControlSettings; |
||||
|
import org.thingsboard.server.queue.sqs.TbAwsSqsAdmin; |
||||
|
import org.thingsboard.server.queue.sqs.TbAwsSqsConsumerTemplate; |
||||
|
import org.thingsboard.server.queue.sqs.TbAwsSqsProducerTemplate; |
||||
|
import org.thingsboard.server.queue.sqs.TbAwsSqsQueueAttributes; |
||||
|
import org.thingsboard.server.queue.sqs.TbAwsSqsSettings; |
||||
|
|
||||
|
import javax.annotation.PreDestroy; |
||||
|
|
||||
|
@Component |
||||
|
@ConditionalOnExpression("'${queue.type:null}'=='aws-sqs' && '${service.type:null}'=='tb-vc-executor'") |
||||
|
public class AwsSqsTbVersionControlQueueFactory implements TbVersionControlQueueFactory { |
||||
|
|
||||
|
private final TbAwsSqsSettings sqsSettings; |
||||
|
private final TbQueueCoreSettings coreSettings; |
||||
|
private final TbQueueVersionControlSettings vcSettings; |
||||
|
|
||||
|
|
||||
|
private final TbQueueAdmin coreAdmin; |
||||
|
private final TbQueueAdmin notificationAdmin; |
||||
|
private final TbQueueAdmin vcAdmin; |
||||
|
|
||||
|
public AwsSqsTbVersionControlQueueFactory(TbAwsSqsSettings sqsSettings, |
||||
|
TbQueueCoreSettings coreSettings, |
||||
|
TbQueueVersionControlSettings vcSettings, |
||||
|
TbAwsSqsQueueAttributes sqsQueueAttributes |
||||
|
) { |
||||
|
this.sqsSettings = sqsSettings; |
||||
|
this.coreSettings = coreSettings; |
||||
|
this.vcSettings = vcSettings; |
||||
|
|
||||
|
this.coreAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getCoreAttributes()); |
||||
|
this.notificationAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getNotificationsAttributes()); |
||||
|
this.vcAdmin = new TbAwsSqsAdmin(sqsSettings, sqsQueueAttributes.getVcAttributes()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToUsageStatsServiceMsg>> createToUsageStatsServiceMsgProducer() { |
||||
|
return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getUsageStatsTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
||||
|
return new TbAwsSqsProducerTemplate<>(notificationAdmin, sqsSettings, coreSettings.getTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToVersionControlServiceMsg>> createToVersionControlMsgConsumer() { |
||||
|
return new TbAwsSqsConsumerTemplate<>(vcAdmin, sqsSettings, vcSettings.getTopic(), |
||||
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToVersionControlServiceMsg.parseFrom(msg.getData()), msg.getHeaders()) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
@PreDestroy |
||||
|
private void destroy() { |
||||
|
if (coreAdmin != null) { |
||||
|
coreAdmin.destroy(); |
||||
|
} |
||||
|
if (notificationAdmin != null) { |
||||
|
notificationAdmin.destroy(); |
||||
|
} |
||||
|
if (vcAdmin != null) { |
||||
|
vcAdmin.destroy(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,90 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2022 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
* you may not use this file except in compliance with the License. |
||||
|
* You may obtain a copy of the License at |
||||
|
* |
||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
* |
||||
|
* Unless required by applicable law or agreed to in writing, software |
||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
* See the License for the specific language governing permissions and |
||||
|
* limitations under the License. |
||||
|
*/ |
||||
|
package org.thingsboard.server.queue.provider; |
||||
|
|
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.thingsboard.server.gen.transport.TransportProtos; |
||||
|
import org.thingsboard.server.queue.TbQueueAdmin; |
||||
|
import org.thingsboard.server.queue.TbQueueConsumer; |
||||
|
import org.thingsboard.server.queue.TbQueueProducer; |
||||
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
||||
|
import org.thingsboard.server.queue.pubsub.TbPubSubAdmin; |
||||
|
import org.thingsboard.server.queue.pubsub.TbPubSubConsumerTemplate; |
||||
|
import org.thingsboard.server.queue.pubsub.TbPubSubProducerTemplate; |
||||
|
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.TbQueueVersionControlSettings; |
||||
|
|
||||
|
import javax.annotation.PreDestroy; |
||||
|
|
||||
|
@Component |
||||
|
@ConditionalOnExpression("'${queue.type:null}'=='pubsub' && '${service.type:null}'=='tb-vc-executor'") |
||||
|
public class PubSubTbVersionControlQueueFactory implements TbVersionControlQueueFactory { |
||||
|
|
||||
|
private final TbPubSubSettings pubSubSettings; |
||||
|
private final TbQueueCoreSettings coreSettings; |
||||
|
private final TbQueueVersionControlSettings vcSettings; |
||||
|
|
||||
|
private final TbQueueAdmin coreAdmin; |
||||
|
private final TbQueueAdmin notificationAdmin; |
||||
|
private final TbQueueAdmin vcAdmin; |
||||
|
|
||||
|
public PubSubTbVersionControlQueueFactory(TbPubSubSettings pubSubSettings, |
||||
|
TbQueueCoreSettings coreSettings, |
||||
|
TbQueueVersionControlSettings vcSettings, |
||||
|
TbPubSubSubscriptionSettings pubSubSubscriptionSettings |
||||
|
) { |
||||
|
this.pubSubSettings = pubSubSettings; |
||||
|
this.coreSettings = coreSettings; |
||||
|
this.vcSettings = vcSettings; |
||||
|
|
||||
|
this.coreAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getCoreSettings()); |
||||
|
this.notificationAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getNotificationsSettings()); |
||||
|
this.vcAdmin = new TbPubSubAdmin(pubSubSettings, pubSubSubscriptionSettings.getVcSettings()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToUsageStatsServiceMsg>> createToUsageStatsServiceMsgProducer() { |
||||
|
return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getUsageStatsTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
||||
|
return new TbPubSubProducerTemplate<>(notificationAdmin, pubSubSettings, coreSettings.getTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToVersionControlServiceMsg>> createToVersionControlMsgConsumer() { |
||||
|
return new TbPubSubConsumerTemplate<>(vcAdmin, pubSubSettings, vcSettings.getTopic(), |
||||
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToVersionControlServiceMsg.parseFrom(msg.getData()), msg.getHeaders()) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
@PreDestroy |
||||
|
private void destroy() { |
||||
|
if (coreAdmin != null) { |
||||
|
coreAdmin.destroy(); |
||||
|
} |
||||
|
if (notificationAdmin != null) { |
||||
|
notificationAdmin.destroy(); |
||||
|
} |
||||
|
if (vcAdmin != null) { |
||||
|
vcAdmin.destroy(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,90 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2022 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
* you may not use this file except in compliance with the License. |
||||
|
* You may obtain a copy of the License at |
||||
|
* |
||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
* |
||||
|
* Unless required by applicable law or agreed to in writing, software |
||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
* See the License for the specific language governing permissions and |
||||
|
* limitations under the License. |
||||
|
*/ |
||||
|
package org.thingsboard.server.queue.provider; |
||||
|
|
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.thingsboard.server.gen.transport.TransportProtos; |
||||
|
import org.thingsboard.server.queue.TbQueueAdmin; |
||||
|
import org.thingsboard.server.queue.TbQueueConsumer; |
||||
|
import org.thingsboard.server.queue.TbQueueProducer; |
||||
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
||||
|
import org.thingsboard.server.queue.rabbitmq.TbRabbitMqAdmin; |
||||
|
import org.thingsboard.server.queue.rabbitmq.TbRabbitMqConsumerTemplate; |
||||
|
import org.thingsboard.server.queue.rabbitmq.TbRabbitMqProducerTemplate; |
||||
|
import org.thingsboard.server.queue.rabbitmq.TbRabbitMqQueueArguments; |
||||
|
import org.thingsboard.server.queue.rabbitmq.TbRabbitMqSettings; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueVersionControlSettings; |
||||
|
|
||||
|
import javax.annotation.PreDestroy; |
||||
|
|
||||
|
@Component |
||||
|
@ConditionalOnExpression("'${queue.type:null}'=='rabbitmq' && '${service.type:null}'=='tb-vc-executor'") |
||||
|
public class RabbitMqTbVersionControlQueueFactory implements TbVersionControlQueueFactory { |
||||
|
|
||||
|
private final TbRabbitMqSettings rabbitMqSettings; |
||||
|
private final TbQueueCoreSettings coreSettings; |
||||
|
private final TbQueueVersionControlSettings vcSettings; |
||||
|
|
||||
|
private final TbQueueAdmin coreAdmin; |
||||
|
private final TbQueueAdmin notificationAdmin; |
||||
|
private final TbQueueAdmin vcAdmin; |
||||
|
|
||||
|
public RabbitMqTbVersionControlQueueFactory(TbRabbitMqSettings rabbitMqSettings, |
||||
|
TbQueueCoreSettings coreSettings, |
||||
|
TbQueueVersionControlSettings vcSettings, |
||||
|
TbRabbitMqQueueArguments queueArguments |
||||
|
) { |
||||
|
this.rabbitMqSettings = rabbitMqSettings; |
||||
|
this.coreSettings = coreSettings; |
||||
|
this.vcSettings = vcSettings; |
||||
|
|
||||
|
this.coreAdmin = new TbRabbitMqAdmin(this.rabbitMqSettings, queueArguments.getCoreArgs()); |
||||
|
this.notificationAdmin = new TbRabbitMqAdmin(this.rabbitMqSettings, queueArguments.getNotificationsArgs()); |
||||
|
this.vcAdmin = new TbRabbitMqAdmin(this.rabbitMqSettings, queueArguments.getVcArgs()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToUsageStatsServiceMsg>> createToUsageStatsServiceMsgProducer() { |
||||
|
return new TbRabbitMqProducerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getUsageStatsTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
||||
|
return new TbRabbitMqProducerTemplate<>(notificationAdmin, rabbitMqSettings, coreSettings.getTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToVersionControlServiceMsg>> createToVersionControlMsgConsumer() { |
||||
|
return new TbRabbitMqConsumerTemplate<>(vcAdmin, rabbitMqSettings, vcSettings.getTopic(), |
||||
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToVersionControlServiceMsg.parseFrom(msg.getData()), msg.getHeaders()) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
@PreDestroy |
||||
|
private void destroy() { |
||||
|
if (coreAdmin != null) { |
||||
|
coreAdmin.destroy(); |
||||
|
} |
||||
|
if (notificationAdmin != null) { |
||||
|
notificationAdmin.destroy(); |
||||
|
} |
||||
|
if (vcAdmin != null) { |
||||
|
vcAdmin.destroy(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,90 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2022 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
|
* you may not use this file except in compliance with the License. |
||||
|
* You may obtain a copy of the License at |
||||
|
* |
||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
* |
||||
|
* Unless required by applicable law or agreed to in writing, software |
||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
|
* See the License for the specific language governing permissions and |
||||
|
* limitations under the License. |
||||
|
*/ |
||||
|
package org.thingsboard.server.queue.provider; |
||||
|
|
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
import org.thingsboard.server.gen.transport.TransportProtos; |
||||
|
import org.thingsboard.server.queue.TbQueueAdmin; |
||||
|
import org.thingsboard.server.queue.TbQueueConsumer; |
||||
|
import org.thingsboard.server.queue.TbQueueProducer; |
||||
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusAdmin; |
||||
|
import org.thingsboard.server.queue.azure.servicebus.TbServiceBusConsumerTemplate; |
||||
|
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.common.TbProtoQueueMsg; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueCoreSettings; |
||||
|
import org.thingsboard.server.queue.settings.TbQueueVersionControlSettings; |
||||
|
|
||||
|
import javax.annotation.PreDestroy; |
||||
|
|
||||
|
@Component |
||||
|
@ConditionalOnExpression("'${queue.type:null}'=='service-bus' && '${service.type:null}'=='tb-vc-executor'") |
||||
|
public class ServiceBusTbVersionControlQueueFactory implements TbVersionControlQueueFactory { |
||||
|
|
||||
|
private final TbServiceBusSettings serviceBusSettings; |
||||
|
private final TbQueueCoreSettings coreSettings; |
||||
|
private final TbQueueVersionControlSettings vcSettings; |
||||
|
|
||||
|
private final TbQueueAdmin coreAdmin; |
||||
|
private final TbQueueAdmin notificationAdmin; |
||||
|
private final TbQueueAdmin vcAdmin; |
||||
|
|
||||
|
public ServiceBusTbVersionControlQueueFactory(TbServiceBusSettings serviceBusSettings, |
||||
|
TbQueueCoreSettings coreSettings, |
||||
|
TbQueueVersionControlSettings vcSettings, |
||||
|
TbServiceBusQueueConfigs serviceBusQueueConfigs |
||||
|
) { |
||||
|
this.serviceBusSettings = serviceBusSettings; |
||||
|
this.coreSettings = coreSettings; |
||||
|
this.vcSettings = vcSettings; |
||||
|
|
||||
|
this.coreAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getCoreConfigs()); |
||||
|
this.notificationAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getNotificationsConfigs()); |
||||
|
this.vcAdmin = new TbServiceBusAdmin(serviceBusSettings, serviceBusQueueConfigs.getVcConfigs()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToUsageStatsServiceMsg>> createToUsageStatsServiceMsgProducer() { |
||||
|
return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getUsageStatsTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToCoreNotificationMsg>> createTbCoreNotificationsMsgProducer() { |
||||
|
return new TbServiceBusProducerTemplate<>(notificationAdmin, serviceBusSettings, coreSettings.getTopic()); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToVersionControlServiceMsg>> createToVersionControlMsgConsumer() { |
||||
|
return new TbServiceBusConsumerTemplate<>(vcAdmin, serviceBusSettings, vcSettings.getTopic(), |
||||
|
msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToVersionControlServiceMsg.parseFrom(msg.getData()), msg.getHeaders()) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
@PreDestroy |
||||
|
private void destroy() { |
||||
|
if (coreAdmin != null) { |
||||
|
coreAdmin.destroy(); |
||||
|
} |
||||
|
if (notificationAdmin != null) { |
||||
|
notificationAdmin.destroy(); |
||||
|
} |
||||
|
if (vcAdmin != null) { |
||||
|
vcAdmin.destroy(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue