RabbitMQ 最新版安裝 (Linux環境)
啟動rabbitmq
隊列是空的
資料庫表是無資料的
啟動nacos
應用內建rabbitMQ
父工程導入依賴
<!-- 消息隊列通用依賴 -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
子工程配置(以訂單應用為例)
server:
port: 8000
spring:
application:
name: order-serv
cloud:
nacos:
discovery:
service: order-serv
server-addr: nacos.server.com:8848
zipkin:
base-url: http://zipkin.server.com:9411/ # 服務端位址
discoveryClientEnabled: false # 解決nacos內建zipkin報錯
sender:
# type: web # 資料傳輸方式,web 表示以 HTTP 封包的形式向服務端發送資料
type: rabbit # 資料傳輸方式,web 表示以 MQ封包的形式向服務端發送資料
rabbitmq:
queue: zipkin # 隊列名稱
rabbitmq:
host: rabbit.server.com # 伺服器 IP
port: 5672 # 伺服器端口
username: guest # 使用者名
password: guest # 密碼
listener:
direct:
retry:
enabled: true # 是否開啟釋出重試
max-attempts: 5 # 最大重試次數
initial-interval: 5000 # 重試間隔時間(機關毫秒)
simple:
retry:
enabled: true # 是否開啟消費者重試
max-attempts: 5 # 最大重試次數
initial-interval: 5000 # 重試間隔時間(機關毫秒)
sleuth:
sampler:
probability: 1.0 # 收集資料百分比,預設 0.1(10%)
啟動應用
http://localhost/order/order/create?productId=22&userId=11
檢查隊列消息
現在通路服務,将鍊路追蹤的消息已經推送到了mq 隊列上
啟動zipkin服務端
java -jar zipkin-server-2.23.4-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=192.168.43.122 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --SQL_PASS=123456 --MYSQL_DB=zipkin --RABBIT_ADDRESSES=localhost --RABBIT_USER=guest --RABBIT_PASSWORD=guest --RABBIT_VIRTUAL_HOST=/ --RABBIT_QUEUE=zipkin
消息隊列消息
mq隊列消息已經被zipkin-server服務端消費了,隊列中的消息沒了
http://192.168.159.102:9411/zipkin/
zipkin已經将鍊路消息持久化到了mysql資料庫中
重新啟動zipkin
java -jar zipkin-server-2.23.4-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=192.168.43.122 --MYSQL_TCP_PORT=3306 --MYSQL_USER=root --SQL_PASS=123456 --MYSQL_DB=zipkin --RABBIT_ADDRESSES=localhost --RABBIT_USER=guest --RABBIT_PASSWORD=guest --RABBIT_VIRTUAL_HOST=/ --RABBIT_QUEUE=zipkin
重新檢視鍊路消息是否已經持久化道mysql資料庫中