具有Spring Boot和Azure Service Bus Starter的多个队列以及预定的使用情况

时间:2018-07-20 19:29:35

标签: spring-boot azureservicebus

我引用此示例用于使用Azure Service Bus https://github.com/Microsoft/azure-spring-boot/tree/master/azure-spring-boot-samples/azure-servicebus-spring-boot-sample

我能够毫无问题地运行示例。

1-作为对此的扩展,我现在在同一服务总线名称空间中创建了多个队列。我想阅读消息并将消息发布到每个队列。 通过azure-servicebus-spring-boot-starter项目,如何指定多个队列使用。

2-我想每10秒听一次队列。对于sprint引导应用程序中的相同设置,我启用了计划。到目前为止,在每10秒安排一次的components方法中,我正在注册消息处理程序。

queueClient.registerMessageHandler(new MessageHandler(),options);

可以再次注册是否有问题?如果是这样,如何编写相同的代码。

谢谢

1 个答案:

答案 0 :(得分:0)

当您有多个队列时,将无法使用自动配置属性来获取队列客户端,而必须创建@Configuration类,然后为每个队列名称创建一个客户端;例如,

@Bean
public QueueClient queueName1(@Value("connection-string") String connectionString, @Value("queueName1") String queueName) { 
       ...
       return new QueueClient(new ConnectionStringBuilder(connectionString, queueName),
            ReceiveMode.PEEKLOCK);
       ...
 }

@Bean
public QueueClient queueName2(@Value("connection-string") String connectionString, @Value("queueName2") String queueName) { 
       ...
       return new QueueClient(new ConnectionStringBuilder(connectionString, queueName),
            ReceiveMode.PEEKLOCK);
       ...
 }

,然后在您的服务代码中,使用

   @Qualifier("queueName1") QueueClient queueClient1;
   @Qualifier("queueName2") QueueClient queueClient2;