Rabbitmq 多个SimpleMessageListenerContainer容器

Rabbitmq 多个SimpleMessageListenerContainer容器,rabbitmq,spring-amqp,Rabbitmq,Spring Amqp,我正在侦听2个RabbitMQ队列。对于1个队列,我需要一个消费者来确保一次只处理一条消息。 第二个队列可以在一秒钟内接收大量消息,我需要能够一次使用许多消息 我有下面的代码,它按照我的预期工作。但我想看看是否有更好的方法 @Bean SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {

我正在侦听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");
}

你所做的是绝对正确的。如果不同队列需要不同的使用者,则必须配置不同的
ListenerContainer
s。可以考虑使用Spring集成AMQP通道适配器: