工作队列模式是一个生产者、一个队列,有一个或者多个消费者。
消费者之间竞争消费消息,即队列中的每一条消息只可能被一个消费者消费。
应用场景:对于消息任务很多的情况,可以使用工作队列提高任务处理的速度。
示例:
消费端:增加两个消费者,监听同一个队列:
@Override
@RabbitListener(queues = {RabbitMqConfig.DIRECT_QUEUE})
public void receiveMessage(String message) {
System.out.println("消息者1:获取到的mq消息:"+message);
}
@Override
@RabbitListener(queues = {RabbitMqConfig.DIRECT_QUEUE})
public void receiveMessage1(String message) {
System.out.println("消息者2:获取到的mq消息:"+message);
}
生产端:发送多条消息测试
public static void main(String[] args) {
ApplicationContext run = SpringApplication.run(ProducerMain.class);
RabbitMqService rabbitMqService = (RabbitMqService)run.getBean("rabbitMqService");
for(int i = 0; i < 20; i++){
rabbitMqService.sendMessage("rabbitmq发送消息测试");
}
}
先启动消费端,然后启动生产端,查看消费者的输出:
