我对Spring的消息处理相当陌生,所以请耐心等待。同时处理RabbitMQ消息的Spring
我想我的RabbitMQ消息处理程序在多个线程同时处理的消息。
@Component
public class ConsumerService {
@RabbitListener(queues = {"q"})
public void messageHandler(@Payload M msg) {
System.out.println(msg);
}
}
...
@Configuration
@Import({MessageConverterConfiguration.class, ConsumerService.class})
public class ConsumerConfiguration {
@Autowired
private ConnectionFactory connectionFactory;
@Bean
public List<Declarable> declarations() {
return Arrays.asList(
new DirectExchange("e", true, false),
new Queue("q", true, false, false),
new Binding("q", Binding.DestinationType.QUEUE, "e", "q", null)
);
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(MessageConverter contentTypeConverter, SimpleRabbitListenerContainerFactoryConfigurer configurer) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConcurrentConsumers(10);
configurer.configure(factory, connectionFactory);
factory.setMessageConverter(contentTypeConverter);
return factory;
}
}
在我的小测试中,队列“q”上有4条消息。我得到处理他们。没事儿。但我会逐一处理它们。如果我在“ConsumerService.messageHandler”中设置了一个断点(实质上延迟了处理消息的完成),我想最终在该断点处有4个线程。但我从来没有超过一个线程。只要我让它运行完成消息的处理,就可以处理下一条消息。我需要做什么才能同时处理这些消息?