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