rabbitmq中消息的并行监听

rabbitmq中消息的并行监听,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我们有一个要求,即在应用程序启动时使用direct exchange在rabbitMq中创建队列,然后必须为每个队列分配一个侦听器。我们通过以下配置使用Spring AMQP实现了这一点 @Bean(name= {"dispatcherListener"}) public SimpleMessageListenerContainer dispatcherListener() { SimpleMessageListenerContainer listenerContainer = ne

我们有一个要求,即在应用程序启动时使用direct exchange在rabbitMq中创建队列,然后必须为每个队列分配一个侦听器。我们通过以下配置使用Spring AMQP实现了这一点

 @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()!