通常为了测试两个服务之间消息生产和消费可以创建两个 SpringBoot 项目,这里为了简单,就用一个项目了,一个在正常的项目中,作为消费者(订阅者),等待接受消息;另一个通过 测试类生产消息,发送消息。
just do it!
1.首先需要添加依赖
pom.xml
2.配置文件
application.yml
3.服务消费者(消息订阅者)
4、服务生产者(消息发送者)
1.启动RabbitMQ
RabbitMQ 的安装和启动之前介绍了,点此直达
2.运行项目,目的是启动服务消费者,可以在接收消息里打个断点,方便感知订阅到消息
3.启动测试方法,目的是启动服务生产者,发送消息
经过测试没有问题
just do it!
一、SpringBoot整合 RabbitMQ
1.首先需要添加依赖
pom.xml
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-amqp</artifactId>
- </dependency>
2.配置文件
application.yml
- spring:
- rabbitmq:
- host: localhost
- port: 5672
- username: guest
- password: guest
3.服务消费者(消息订阅者)
- package com.liuyanzhao.blog.core.message;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.amqp.rabbit.annotation.Exchange;
- import org.springframework.amqp.rabbit.annotation.Queue;
- import org.springframework.amqp.rabbit.annotation.QueueBinding;
- import org.springframework.amqp.rabbit.annotation.RabbitListener;
- import org.springframework.stereotype.Component;
- /**
- * 服务订阅者
- * @author 言曌
- * @date 2019-07-02 23:58
- */
- @Slf4j
- @Component
- public class MqReceiver {
- //测试1 简单接收(订阅)
- //1. @RabbitListener(queues = "myQueue") //需要手动创建队列
- //2. @RabbitListener(queuesToDeclare = @Queue("myQueue")) //自动创建队列
- //3. 自动创建,Exchange和Queue绑定
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue("myQueue"),
- exchange = @Exchange("myExchange")
- ))
- public void process(String message) {
- log.info("MqReceiver:{}", message);
- }
- //测试2 消息分组
- /**
- * 数码供应商 接受消息
- * 只接受 computer 这个key的消息
- * @param message
- */
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue("myOrder"),
- key = "computer",
- exchange = @Exchange("computerOrder")
- ))
- public void processComputer(String message) {
- log.info("computer MqReceiver:{}", message);
- }
- /**
- * 水果供应商服务 接收消息
- * 只接受 fruit 这个key的消息
- * @param message
- */
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue("myOrder"),
- key = "fruit",
- exchange = @Exchange("fruitOrder")
- ))
- public void processFruit(String message) {
- log.info("fruit MqReceiver:{}", message);
- }
- }
4、服务生产者(消息发送者)
- package com.liuyanzhao.blog.core.message;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.test.context.junit4.SpringRunner;
- import java.util.Date;
- /**
- *
- * 服务生产者
- * @author 言曌
- * @date 2019-07-03 00:05
- */
- @SpringBootTest
- @RunWith(SpringRunner.class)
- public class MqSenderTest {
- @Autowired
- private AmqpTemplate amqpTemplate;
- /**
- * 生产者将消息直接发送到队列
- * @throws Exception
- */
- @Test
- public void send() throws Exception {
- amqpTemplate.convertAndSend("myQueue", "hello saysky, now is " + new Date());
- }
- /**
- * 生产者将消息发送到Exchange
- * @throws Exception
- */
- @Test
- public void sendComputer() throws Exception {
- amqpTemplate.convertAndSend("computerOrder", "computer", "hello saysky, now is " + new Date());
- }
- /**
- * 生产者将消息发送到Exchange
- * @throws Exception
- */
- @Test
- public void sendFruit() throws Exception {
- amqpTemplate.convertAndSend("fruitOrder", "fruit", "hello saysky, now is " + new Date());
- }
- }
二、启动项目
1.启动RabbitMQ
RabbitMQ 的安装和启动之前介绍了,点此直达
2.运行项目,目的是启动服务消费者,可以在接收消息里打个断点,方便感知订阅到消息
3.启动测试方法,目的是启动服务生产者,发送消息
经过测试没有问题
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏