springCloud-Alibaba——stream+kafka消息微服務集成

目錄

(1)引入依賴:

A、引入Spring Cloud管理依賴:

B、引入Spring Cloud Alibaba管理依賴:

C、引入Spring Cloud Stream管理依賴:

D、引入kafka依賴:

(2)修改配置文件:

A、生產者配置文件:

B、消費者配置文件:

(3)創建接口:

A、生產者接口:

B、消費者接口:

(4)修改啓動類:

(5)編寫代碼:

A、發送消息代碼:

B、消費消息代碼:

(6)啓動測試:


因爲stream是一個消息驅動微服務框架,藉助binder插件與第三方消息組件進行信息交互的,因此使用大致過程與stream+rocketmq是一樣的,不同的是在配置信息上可能有所不同,因爲rocketmq是阿里巴巴提供維護的,並不是stream官方維護的。

(1)引入依賴:

A、引入Spring Cloud管理依賴:

B、引入Spring Cloud Alibaba管理依賴:

C、引入Spring Cloud Stream管理依賴:

D、引入kafka依賴:

(2)修改配置文件:

A、生產者配置文件:

B、消費者配置文件:

消費者配置rabbitmq的信息與生產者配置rabbitmq的信息幾乎是完全一樣的,只有bindings中對應的名稱不一樣而已,並且增加了一個分組group,保證集羣部署,保證一條消息只讓一個分組內的一個實例消費。

(3)創建接口:

A、生產者接口:

創建一個自定義生產者的binding對應的接口,在接口中寫一個out()方法,返回值爲MessageChannel,並在方法上添加註解Output,指定一個自定義的binding常量值,這個常量值是與配置文件中寫的那個自定義binding值保持一致。

B、消費者接口:

創建一個自定義消費者的binding對應的接口,在接口中寫一個input()方法,返回值爲SubscribableChannel,並在方法上添加註解input,指定一個自定義的binding常量值,這個常量值是與配置文件中寫的那個自定義binding值保持一致。

(4)修改啓動類:

在啓動類上,綁定剛剛創建的自定義binding對應的那個接口,如果項目中有多個接口,那麼就綁定多個接口。

(5)編寫代碼:

A、發送消息代碼:

首先通過Autowired創建自定義的接口對象,然後在方法體中,通過自定義接口對象調用output()方法發送消息。

B、消費消息代碼:

創建一個實體類,類上添加service註解,在類中創建一個方法,方法有一個string類型的參數(該參數就是消息體),方法上添加StreamListener,並指定是哪個input。

(6)啓動測試:

啓動消息生產者、消息消費者,訪問接口,然後就會顯示發送消息成功,在消費者中也會消費剛纔發送的消息。在kafka-manager的控制檯中可以看到在topic的list列表中會看到對應的topic,並且kafka是將消息數據持久化到日誌中的,因此在安裝kafka的時候注意配置日誌路徑,就可以完成消息持久化了。這樣在消費者異常期間,有生產者發送的消息也就持久化kafka的日誌中了,即便是kafka關閉再啓動後,消費者也可以消費在異常期間生產者發送的消息,這就表明stream+kafka集成成功了,並且實現了消息的持久化,可以正常發送和消費消息了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章