【问题标题】:Multiple SimpleMessageListenerContainer containers多个 SimpleMessageListenerContainer 容器
【发布时间】:2018-04-05 00:54:02
【问题描述】:

我正在收听 2 个 RabbitMQ 队列。对于 1 个队列,我需要一个消费者来确保一次只处理一条消息。 第二个队列可以在一秒钟内接收大量消息,我需要能够一次消费许多消息。

我有以下代码,它确实按我的预期工作。但是我想看看是否有更好的方法来做到这一点。

@Bean
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
        MessageListenerAdapter listenerAdapter) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setMessageConverter(Jackson2JsonMessageConverter());
    container.setQueueNames(QUEUE1);
    container.setMessageListener(listenerAdapter);
    container.setAdviceChain(new Advice[]{interceptor()});
    return container;
}

@Bean
SimpleMessageListenerContainer container1(ConnectionFactory connectionFactory,
        MessageListenerAdapter listenerAdapter) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setMessageConverter(Jackson2JsonMessageConverter());
    container.setQueueNames(QUEUE2);
    container.setMessageListener(listenerAdapter);
    container.setAdviceChain(new Advice[]{interceptor()});
    container.setConcurrentConsumers(1);
    container.setMaxConcurrentConsumers(10);
    return container;
}

@Bean
MessageListenerAdapter listenerAdapter() {
    return new MessageListenerAdapter(queueService, "consume");
}

【问题讨论】:

    标签: rabbitmq spring-amqp


    【解决方案1】:

    你所做的绝对正确。如果不同的队列需要不同的消费者,就得配置不同的ListenerContainers。您也可以考虑使用 Spring Integration AMQP 通道适配器:https://docs.spring.io/spring-integration/docs/5.0.3.RELEASE/reference/html/amqp.html

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多