rabbitmq中消息的并行监听
我们有一个要求,即在应用程序启动时使用direct exchange在rabbitMq中创建队列,然后必须为每个队列分配一个侦听器。我们通过以下配置使用Spring AMQP实现了这一点rabbitmq中消息的并行监听,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我们有一个要求,即在应用程序启动时使用direct exchange在rabbitMq中创建队列,然后必须为每个队列分配一个侦听器。我们通过以下配置使用Spring AMQP实现了这一点 @Bean(name= {"dispatcherListener"}) public SimpleMessageListenerContainer dispatcherListener() { SimpleMessageListenerContainer listenerContainer = ne
@Bean(name= {"dispatcherListener"})
public SimpleMessageListenerContainer dispatcherListener() {
SimpleMessageListenerContainer listenerContainer = new SimpleMessageListenerContainer();
listenerContainer.setConnectionFactory(connectionFactory());
listenerContainer.setQueues(participantQueues());
listenerContainer.setMessageConverter(jsonMessageConverter());
listenerContainer.setMessageListener(subscriptionListener);
listenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO);
listenerContainer.setAutoStartup(false);
return listenerContainer;
}
但是,在上述配置中,我们遇到了一个问题。当我们将消息发布到多个队列时,侦听器将从每个队列中连续读取消息。但我们希望它能够独立于其他队列并行地侦听来自每个队列的消息
有没有人能指引我,我错在哪里?
如果您有任何帮助,我们将不胜感激。这是正确的行为,因为默认的
并发性是1
,因此所有队列只有一个侦听器
只考虑增加配置的值。
更多信息请参见。但是,如果您希望始终在同一线程上接收来自同一队列的消息,则需要为每个队列分别提供一个容器。感谢您的回复。我不会倾向于使用多个消费者,因为消息的顺序可能会丢失,并且对我来说是高度优先的。创建单独的容器会更好,但是我可以在运行时创建侦听器容器吗,因为将动态创建新队列,并且我需要为每个队列分别创建一个容器,所以您可以知道,您应该为它提供所有必需的应用程序上下文基础结构。或者只使用BeanFactory.InitializeBean()!