springboot 项目 运行rabbitmq(推送+消费)
准备
先下载windos版本的mq
「rabbitmq-server-3.9.13.exe」https://www.aliyundrive.com/s/VKB63ghAJZx
1启动rabbitmq
双击
如果出现端口占用的情况,进行以下操作
右键->停止
账号密码默认:
guest
这里我是用新添加的admin账号,注意要给管理员权限
生产者
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
4创建队列
@Configuration public class RabbitMQConfig {
//新建一个用来封装队列参数的对象,放入spring容器 //rabbitmq自动配置类会发现这个对象,使用其中的参数 //来创建队列 @Bean(name = "orderQueue") public Queue orderQueue(){ return new Queue("orderQueue"); } }
5生产订单
在OrderServiceImpl中注入RabbitAutoConfigtion配置类AmqpTemplate
@Service public class OrderServiceImpl implements OrderService { @Resource private AmqpTemplate amqpTemplate; @Override public void demo2() { String s = "测试demo2"; amqpTemplate.convertAndSend("orderQueue",s); } }
可以看到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 { System.out.println("订单已存储,id="+order.getOrderId()); } }
启动项目就可以把存在rabbitMQ中的订单给消费掉