SpringBoot实现RabbitMQ简单队列(附带实例)
简单队列是 RabbitMQ 中最简单的工作队列模式,也叫点对点模式,即一个消息的生产者对应一个消费者,它包含一个生产者、一个消费者和一个队列。生产者向队列中发送消息,消费者从队列中获取消息并消费。
如下图所示,简单队列有 3 个角色:一个生产者、一个队列和一个消费者,这样理解起来比较简单:

图 1 简单队列模式
下面根据示例来演示简单队列的工作模式。
1) 创建生产者。生产者示例代码如下:
2) 创建消费者。消费者示例代码如下:
3) 验证测试。下面设计一个发送者和一个接收者,连续发送 10 条消息,验证消息发送与接收效果:

图 2 简单队列模式单元测试的运行结果
通过上面的程序输出日志可以看到,消费者已经收到了生产者发送的消息并进行处理。由于是一对一的工作模式,它的缺点很明显,在实际的应用中,业务处理比较耗费时间,简单队列模式很难在并发环境下支撑并发处理的业务量。
如下图所示,简单队列有 3 个角色:一个生产者、一个队列和一个消费者,这样理解起来比较简单:

图 1 简单队列模式
下面根据示例来演示简单队列的工作模式。
1) 创建生产者。生产者示例代码如下:
@Component public class Producer { @Autowired private RabbitTemplate rabbitTemplate; public void produce() { String message = new Date() + "Beijing"; System.out.println("生产者生产消息=====" + message); rabbitTemplate.convertAndSend("rabbitmq_queue", message); } }
2) 创建消费者。消费者示例代码如下:
@Component public class Consumer { @RabbitHandler @RabbitListener(queuesToDeclare = @Queue("rabbitmq_queue")) public void process(String message) { Thread.sleep(1000) System.out.println("消费者消费消息111=====" + message); } }上面的生产者、消费者的示例代码和前面的示例是一样的。
3) 验证测试。下面设计一个发送者和一个接收者,连续发送 10 条消息,验证消息发送与接收效果:
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Autowired Producer producer; @Test public void contextLoads() throws InterruptedException { producer.produce(); Thread.sleep(1*1000); } }单击 Run Test 或在方法上右击,选择 Run 'contextLoads()',运行单元测试程序,查看后台输出情况,运行结果如下图所示:

图 2 简单队列模式单元测试的运行结果
通过上面的程序输出日志可以看到,消费者已经收到了生产者发送的消息并进行处理。由于是一对一的工作模式,它的缺点很明显,在实际的应用中,业务处理比较耗费时间,简单队列模式很难在并发环境下支撑并发处理的业务量。