我们的应用程序使用 RabbitMQ 提供的多个队列中的数据。为了提高吞吐量,我们为每个队列启动多个线程,这些线程会阻塞从这些队列中获取数据。
对于新服务,我们希望使用 Spring Boot,并且每个队列有多个线程从这些队列中获取数据。以下是用于处理从某个队列到达的数据的规范 Spring Boot 代码:
@StreamListener(target = Processor.INPUT)
@SendTo(Processor.OUTPUT)
public Message<SomeData> process(Message<SomeData> message) {
SomeData result = service.process(message.getPayload());
return MessageBuilder
.withPayload(result)
.copyHeaders(message.getHeaders())
.build();
}
现在的问题是如何让 Spring Boot 生成多个线程来服务一个队列而不是单个线程。吞吐量对于我们的应用程序非常关键,因此需要这样做。
最佳答案
检查available properties ,搜索rabbitmq。
spring.rabbitmq.listener.simple.concurrency= # Minimum number of listener invoker threads
看起来很有希望
关于java - 如何使用 Spring Boot 让多个线程从 RabbitMQ 队列中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54803033/