spring-boot RabbitListener如何将单个队列绑定到单个线程?

时间:2018-04-24 01:47:06

标签: java spring spring-boot spring-rabbitmq

@RabbitListener(queues = {"queue1", "queue2"})

public void reciver(String message) {

    logger.info("thread id:{}, message:{}", Thread.currentThread().getId(), message);

}

发现queue1和queue2使用相同的线程。 这里想要queue1和queue2占用不同的线程。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要使用两个单独的侦听器来实现此目的。

如果将容器concurrency设置为2,您将获得两个线程,但来自两个队列的消息将分布在两个线程中(每个队列都不会绑定到特定线程。

DirectMessageListenerContainer(在2.0版中添加),完全使用不同的线程模型 - 在rabbitmq客户端库线程上调用侦听器;每个监听器没有专用线程。