rabbitmq在项目中的使用
1启动rabbitmq
在虚拟机中启动rabbitmq
2添加依赖
在项目中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3配置连接
配置rabbitmq的连接
rabbitmq:
host: 192.168.126.17
port: 5672
username: admin
password: admin
配置内容是在spring的配置下
4创建队列
在主程序中
//新建一个用来封装队列参数的对象,放入spring容器
//rabbitmq自动配置类会发现这个对象,使用其中的参数
//来创建队列
@Bean
public Queue orderQueue(){
return new Queue("orderQueue",true);
}
5生产订单
在OrderServiceImpl中注入RabbitAutoConfigtion配置类AmqpTemplate
/**
* 在RabbitAutoConfigtion自动配置类
* 已经创建了AmqpTemplate实例
* 在这里直接注入
*/
@Autowired
private AmqpTemplate t;
不执行订单业务,将订单发给rabbit消息队列
public String saveOrder(PdOrder pdOrder) throws Exception {
String orderId = generateId();
pdOrder.setOrderId(orderId);
//不在直接执行数据操作,而是改成向rabbitmq发送订单对象
t.convertAndSend("orderQueue",pdOrder);
}
在系统上下发一条订单
可以看到rabbitmq上存了一条消息
6创建消费者
在消费者系统中同样添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
添加配置信息
rabbitmq:
host: 192.168.126.17
port: 5672
username: admin
password: admin
创建消费者类
/**
* 基础配置 1.依赖,2.连接,3.队列
*
*
*消费者从orderQueue接收订单,
* 调用业务代码,完成订单存储
*/
@RabbitListener(queues = "orderQueue")
@Component
public class OrderComsumer {
@Autowired
private OrderService orderService;
@RabbitHandler //配合RabbitListener,指定处理消息的方法
public void receive(PdOrder order) throws Exception {
orderService.saveOrder(order);
System.out.println("订单已存储,id="+order.getOrderId());
}
}
在此项目中完成对订单的消费
启动项目就可以把存在rabbitMQ中的订单给消费掉
g-w5Oe6xpS-1625036847376)]
启动项目就可以把存在rabbitMQ中的订单给消费掉
[外链图片转存中…(img-UJld8yV5-1625036847377)]
[外链图片转存中…(img-6ZtyoUvH-1625036847378)]