gpt4 book ai didi

java - Spring Boot 多个 RabbitMQ 监听器到单个容器

转载 作者:行者123 更新时间:2023-11-29 04:39:53 25 4
gpt4 key购买 nike

我正在使用 spring boot(基于注释)开发 RabbitMQ。我正在尝试将多个监听器添加到单个容器,但只有一个监听器工作。

我能够初始化两个容器并为每个容器分配单独的消息监听器。这是否是在每个容器都有各自的监听器的情况下添加多个监听器的唯一方法?我正在使用 ChannelAwareMessageListener 接口(interface),这样我就可以单独处理消息并确认它们。我不想使用 RabbitListener,因为我无法确认消息。

    @Bean
@Qualifier("receiverContainer")
SimpleMessageListenerContainer receiverContainer(ConnectionFactory connectionFactory,@Qualifier("receiverAdapter") MessageListenerAdapter
listenerAdapter) {

SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
container.setAutoStartup(false);
return container;
}

在spring xml中,我可以给一个容器添加两个监听器

<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="auto" concurrency="10"
requeue-rejected="true">
<rabbit:listener ref="myMessageListener" queues="spring.queue" />
<rabbit:listener ref="messageQueueManager" queues="user.login.notification" />
</rabbit:listener-container>

那么如何在spring boot注解的基础上给一个容器添加两个监听器呢?或者我应该采用一个容器一个监听器的方式?

最佳答案

没有;每个容器只允许一个监听器。

当使用 XML 命名空间时,虽然它“看起来”像有多个监听器,但实际上每个 <rabbit:listener/> 都有一个单独的容器。元素。

<rabbit:listener-container/>父元素只是为子元素创建的每个容器指定公共(public)容器属性的一种便捷方式。

关于java - Spring Boot 多个 RabbitMQ 监听器到单个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com