RabbitMQ的基础使用
记录一下RabbitMQ+SpirngBoot的基础使用
引入maven配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
修改yml配置文件
rabbitmq: host: "ip" port: 5672(端口默认一般都是5672) username: "guest" password: "guest"
消息消费
三种方式- @RabbitListener(queues = “myqueue”) 仅连接队列不自动创建队列如果队列不存在就会报错
- @RabbitListener(queuesToDeclare = @Queue(“myqueue”))自动创建和连接队列
- @RabbitListener(bindings = @QueueBinding(value = @Queue(“myqueue”),exchange = @Exchange(“myExchange”)))自动创建队列和连接队列并且绑定exchange
如果我有大的订单服务,订单服务下有水果服务和电脑服务,他们两个只想接受和自己有关的消息,应该如何配置。
@RabbitListener(bindings = @QueueBinding(value = @Queue(“水果订单/电脑订单”), key=”订单/水果”,exchange = @Exchange(“订单的exchange”)))
使用订单的exchange 但是队列和key设置成水果/电脑相应的,并且消息发送方也要有相应的改变@Slf4j @Component public class MqReceiver { //@RabbitListener(queues = "myqueue") 仅连接队列不自动创建队列如果队列不存在就会报错 //@RabbitListener(queuesToDeclare = @Queue("myqueue"))自动创建和连接队列 @RabbitListener(bindings = @QueueBinding(value = @Queue("myqueue"),exchange = @Exchange("myExchange"))) public void process(String message){ log.info(message); } @RabbitListener(bindings = @QueueBinding( value = @Queue("computerqueue"), key = "computer" ,exchange = @Exchange("orderExchange") )) public void computer(String message){ log.info(message); } @RabbitListener(bindings = @QueueBinding( value = @Queue("fruitQueue"), key = "fruit" ,exchange = @Exchange("orderExchange") )) public void fruit(String message){ log.info(message); } }
消息发起
消息发起的关键主要是使用amqpTemplate.convertAndSend方法
直接写一个测试类方便测试@SpringBootTest @RunWith(SpringRunner.class) public class MqTest { @Autowired private AmqpTemplate amqpTemplate; // void convertAndSend(String routingKey, Object message) throws AmqpException; @Test public void sendMessage(){ amqpTemplate.convertAndSend("myqueue","now"+new Date()); } //void convertAndSend(String exchange, String routingKey, Object message) throws AmqpException; @Test public void sendMessageToComputer(){ amqpTemplate.convertAndSend("orderExchange","computer","nowcomputer "+new Date()); } @Test public void sendMessageTofruit(){ amqpTemplate.convertAndSend("orderExchange","fruit","nowfruit "+new Date()); } }
我把方法对应的源码注释在方法上 仔细看就知道该传什么参数,
exchange,key,message
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。邮件至 wcfinyourheart@163.com
文章标题:RabbitMQ的基础使用
本文作者:wcf
发布时间:2020-05-05, 15:17:54
最后更新:2020-05-05, 17:36:47
原始链接:http://1007638786.github.io/2020/05/05/RabbitMQ%E7%9A%84%E5%9F%BA%E7%A1%80%E4%BD%BF%E7%94%A8/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。