spring boot整合kafka
項目地址參考:0. 【緩存高可用微服務實戰】資料總結
切換到相應分支:
編寫業務邏輯
- 不同維度兩種服務會發送來數據變更消息:
商品信息服務
,商品店鋪信息服務
,每個消息都包含服務名以及相應id - 接收到消息之後,根據商品id到對應的服務拉取數據,這一步,我們採取簡化的模擬方式,就是在代碼裏面寫死,會獲取到什麼數據,不去實際再寫其他的服務去調用
商品信息
:id,名稱,價格,圖片列表,商品規格,售後信息,顏色,尺寸商品店鋪信息
:其他維度,用這個維度模擬出來緩存數據維度化拆分,id,店鋪名稱,店鋪等級,店鋪好評率- 分別拉取到了數據之後,將數據組織成json串,然後分別存儲到
ehcache
和redis緩存
中
測試業務邏輯
- 創建一個
kafka topic
bin/kafka-topics.sh --zookeeper 192.168.0.106:2181,192.168.0.107:2181,192.168.0.108:2181 --topic cache-message --replication-factor 1 --partitions 1 --create
- 在命令行啓動一個
kafka producer
bin/kafka-console-producer.sh --broker-list 192.168.0.106:9092,192.168.0.107:9092,192.168.0.108:9092 --topic cache-message
- 啓動系統
Application.java
,消費者開始監聽kafka topic
報錯,需映射虛擬機與本機hosts
C:\Windows\System32\drivers\etc\hosts
ip地址
# C:\Windows\System32\drivers\etc\hosts 修改文件添加以下映射
# eshop
192.168.0.106 eshop-cache01
192.168.0.107 eshop-cache02
192.168.0.108 eshop-cache03
- 在
producer
中,分別發送兩條消息,一個是商品信息服務的消息,一個是商品店鋪信息服務的消息
{"serviceId":"productInfoService","productId":1}
{"serviceId":"shopInfoService","shopId":1}
- 能否接收到兩條消息,並模擬拉取到兩條數據,同時將數據寫入ehcache中,並寫入redis緩存中
ehcache通過打印日誌方式來觀察,redis通過手工連接上去來查詢