如何在SimpleMessageListenerContainer中注入多个使用者?

时间:2018-03-28 05:25:39

标签: spring rabbitmq spring-amqp

我正在编写一个spring boot应用程序,它使用来自RabbitMQ的消息并对其进行处理。由于发布者正在高速发布消息,我希望我的消费者也能高速处理它们。

我的消费者代码不是线程安全的。

下面是一种可能的方式,我想实现:

  1. 将消费者范围标记为“原型”和
  2. 在“SimpleMessageListenerContainer”
  3. 中为同一个类注入多个使用者

    如何使用以下代码实现此目的?

    @Bean
    SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
    MessageListenerAdapter listenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames("MY_MESSAGE_QUEUE");
        container.setConcurrency("10");
        container.setMessageListener(listenerAdapter);
        <<How can I set multiple MessageListener here?????>>
    }
    

    提前致谢。

1 个答案:

答案 0 :(得分:1)

每个容器只能有一个侦听器实例。

如果您的侦听器不是线程安全的,那么每个实例都需要一个单独的容器bean,concurrentConsumers=1(默认值)。