【问题标题】:Multiple queues with Spring Boot and Azure Service Bus Starter & Scheduled consumption具有 Spring Boot 和 Azure 服务总线启动器和计划消耗的多个队列
【发布时间】:2018-12-29 03:52:17
【问题描述】:

我正在参考此示例以使用 Azure 服务总线 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.5 年,没有人关心它。我有同样的问题,在失去宝贵的周末尝试使用 azure-messaging-servicebus 等新版本的库来解决之后,什么都没有解决。最糟糕的是,azure-messaging-servicebus 库现在是测试版,并且没有正式发布该废话。是什么让我花时间去尝试它,然后意识到它以前从未奏效过。我讨厌谁做这种工作。

标签: spring-boot azureservicebus


【解决方案1】:

当您有多个队列时,您将无法使用自动配置属性来获取队列客户端,而是必须创建 @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);
       ...
 }

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

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

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 2022-06-17
    • 2018-03-04
    • 2022-01-27
    • 1970-01-01
    • 2017-02-25
    • 2017-04-22
    • 2014-11-03
    • 2017-11-01
    相关资源
    最近更新 更多