來源:www.cnblogs.com/cott/p/12402423.html
前文總結了Dubbo與SpringBoot的整合,本文基於這套框架,引入RabbitMQ消息隊列。
1.在linux環境使用docker安裝RabbitMQ
<code>//拉取鏡像
docker pull rabbitmq:management
//啟動鏡像
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management/<code>
安裝成功後登陸控制檯
2.生產者
pom.xml中引入RabbitMQ依賴
<code>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-amqp/<artifactid>
<version>1.3.5.RELEASE/<version>
/<dependency>/<code>
application.yml
配置RabbitMQ服務端連接,和交換機名稱
<code>spring:
rabbitmq:
port: 5672
username: admin
password: admin
host: 192.168.200.128
virtual-host: /
order:
fanout:
exchange: order.fanout.exchange/<code>
Producer.java
生產者向MQ發送消息
UserServiceImpl.java
在用戶接口的實現類中,調用生產者的方法
3.消費者
pom.xml中引入RabbitMQ依賴
<code>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-amqp/<artifactid>
<version>1.3.5.RELEASE/<version>
/<dependency>/<code>
配置RabbitMQ服務端信息,和交換機以及隊列名稱
application.yml
<code>spring:
rabbitmq:
port: 5672
username: admin
password: admin
host: 192.168.200.128
virtual-host: /
order:
fanout:
exchange: order.fanout.exchange
queue: order.fanout.queue/<code>
@RabbitListener註解,綁定隊列,交換機,以及選擇交換模式FANOUT
- @RabbitListener 可以標註在類上面,需配合 @RabbitHandler 註解一起使用
- @RabbitListener 標註在類上面表示當有收到消息的時候,就交給 @RabbitHandler 的方法處理,具體使用哪個方法處理,根據 MessageConverter 轉換後的參數類型
Consumer.java(消費者)
<code>package com.cott.gmail.bootorderserviceconsumer.service.impl;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "${order.fanout.queue}", autoDelete = "true"), exchange =
@Exchange(value = "${order.fanout.exchange}", type = ExchangeTypes.FANOUT)))
public class Consumer {
@RabbitHandler
public void processMessage(String msg) {
System.out.format("Receiving Message: -----[%s]----- \\n.", msg);
}
}/<code>
消費者中有調用生產者getAddress()的方法,生產者向MQ中發送一條消息,同時消費者監聽MQ,消費消息。
OrderServiceImpl.java
4.驗證
先後啟動生產者和消費者,在瀏覽器發起請求
消費者控制檯輸出
同時在RabbitMQ控制檯查看監控日誌
閱讀更多 程序員BUG 的文章