RabbitMQ實戰篇8-在庫存服務中配置RabbitMQ,實現訊息接收
阿新 • • 發佈:2018-11-10
上節介紹瞭如何實現訊息的傳送,這節我們接著上節說說如何實現訊息的接收。
新增依賴,進行配置
同樣的,訊息消費者也需要新增RabbitMQ的依賴,配置連線資訊。
因為在上一節已經說過了,這裡過於依賴和連線資訊的配置就不在贅述了。
訂閱訊息
新建一個OrderConsumer,用於訂閱和消費訊息
package com.space.rbq.store.consumer; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import java.io.IOException; /** * 負責接收處理訂單服務傳送的訊息 * @author zhuzhe * @date 2018/6/7 10:09 * @email
[email protected] */ @Slf4j @Component public class OrderConsumer { /*對列名稱*/ public final String QUEUE_NAME1 = "first-queue"; /** * queues 指定從哪個佇列(queue)訂閱訊息 * @param message * @param channel */ @RabbitListener(queues = {QUEUE_NAME1}) public void handleMessage(Message message,Channel channel) throws IOException { try { // 處理訊息 System.out.println("OrderConsumer {} handleMessage :"+message); System.out.println(new String(message.getBody())); }catch (Exception e){ log.error("OrderConsumer handleMessage {} , error:",message,e); } } }
通過@RabbitListener訂閱訊息,queues引數指定從哪個佇列訂閱訊息。
我們從first-queue(也就是上一節中訊息釋出到的佇列)中訂閱訊息。
Message 訊息 ; Channel 進行一些後續處理(這個會在後面的章節講到)
測試
現在生產者和消費者都有了,我們來進行測試
啟動兩個服務
使用postman請求saveOrder介面
可以看到已經成功收到返回。傳送執行成功。
我們看看消費者的控制檯列印:
證明訊息已經成功的被消費者接受。
這樣,訊息的生產和消費我們就基本實現了。但是,顯然在真正的專案開發中是遠遠不能滿足的。
比如訊息如果沒有成功消費掉又該怎麼處理呢?
如果RabbitMQ服務掛了,那麼訊息豈不是都丟失了嗎?
如何保證訊息的可靠性,保證訊息的正確消費,等等。這都是我們接下來需要討論的。歡迎繼續關注下節
原始碼:https://github.com/zhuzhegithub/rabbitmq
轉載請務必保留此出處(原作者):https://blog.csdn.net/zhuzhezhuzhe1
版權宣告:本文為原創文章,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。
https://blog.csdn.net/zhuzhezhuzhe1