首页 > 编程笔记 > Java笔记 阅读:2

SpringBoot实现RabbitMQ简单队列(附带实例)

简单队列是 RabbitMQ 中最简单的工作队列模式,也叫点对点模式,即一个消息的生产者对应一个消费者,它包含一个生产者、一个消费者和一个队列。生产者向队列中发送消息,消费者从队列中获取消息并消费。

如下图所示,简单队列有 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 简单队列模式单元测试的运行结果

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

相关文章