springboot 項目 運行rabbitmq(推送+消費)
準備
先下載windos版本的mq
「rabbitmq-server-3.9.13.exe」//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中的訂單給消費掉
