开启多个消费者(Java RabbitMQ 任意模式)
参考连接
- 实现过程描述:通过RabbitListener注解,配置concurrency参数即可实现,下面代码启动10个消费者并发处理消息;
-
实现原理分析:无论使用RabbitMQ哪种工作模式(
点对点队列模式、工作队列模式、发布订阅模式、路由模式、主题模式、Header模式
),每个队列都支持多个消费者消费一个队列的消息,在同一个队列中一条消息只会被其中一个消费者处理。
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
// 声明消息监听器,通过queues参数指定监听的队列
// 关键参数:concurrency 代表当前监听器需要启动多少个消费者,类型是字符串
@RabbitListener(queues = "hello", concurrency = "10")
@Component
public class HelloListener {
// 使用RabbitHandler标记消息处理器,用来执行消息处理逻辑
@RabbitHandler
public void receive(String msg) {
System.out.println("消费者 - 收到消息 '" + msg + "'");
}
}