場景描述
在進行消息發送與接收驗證的過程中,我們需要確保RocketMQ的生產者能夠將消息成功發送到指定的Topic,同時消費者能夠接收到這些消息。通過驗證,可以確認生產者發送的消息能夠準確無誤地到達消費者,這是消息隊列最基本也是最重要的功能要求。在開發和測試階段,通過消息發送與接收驗證可以及時發現并修復可能存在的問題,避免在實際應用中出現故障。
操作步驟
1、 天翼云官網點擊控制中心,選擇產品分布式消息服務RocketMQ。
2、 登錄分布式消息服務RocketMQ控制臺,點擊右上角地域選擇對應資源池。
進入實例列表,點擊【管理】按鈕進入管理菜單。
3、 進入實例列表,點擊【管理】按鈕進入管理菜單。
4、 進入Topic管理菜單,點擊【撥測】按鈕,進行生產消費的撥測驗證,驗證開通的消息實例和Topic。
1)生產測試撥測:
- 選擇消息類型,默認普通消息。
- 填寫需要產生的測試消息數量,以及每條消息的大小,默認每條消息1KB,建議不超過4MB(4096KB)。
- 選擇已建的消息Topic,若無選項,請新增Topic,詳見上文創建Topic和訂閱組。
- 點擊【測試】按鈕,按照已填寫規格及數量產生測試消息數據,展示消息數據的信息,包括消息ID(messageID)、發送狀態、主題名(topic名)、Broker名、隊列ID。
撥測功能涉及消息發送狀態碼,以下是RocketMQ消息發送狀態碼及其說明:
? SEND_OK(發送成功):表示消息成功發送到了消息服務器。
? FLUSH_DISK_TIMEOUT(刷新磁盤超時):表示消息已經成功發送到消息服務器,但是刷新到磁盤上超時。這可能會導致消息服務器在宕機后,尚未持久化到磁盤上的數據丟失。
? FLUSH_SLAVE_TIMEOUT(刷新從服務器超時):表示消息已經成功發送到消息服務器,但是刷新到從服務器上超時。這可能會導致主從同步不一致。
? SLAVE_NOT_AVAILABLE(從服務器不可用):表示消息已經成功發送到消息服務器,但是從服務器不可用。這可能是由于網絡故障或從服務器宕機引起的。
? UNKNOWN_ERROR(未知錯誤):表示發送消息時遇到了未知的錯誤。一般情況下建議重試發送消息。
? MESSAGE_SIZE_EXCEEDED(消息大小超過限制):表示消息的大小超過了消息服務器的限制。需要檢查消息的大小是否合適。
? PRODUCE_THROTTLE(消息生產被限流):表示消息生產者的頻率超出了消息服務器的限制。這可能是由于消息發送頻率過高引起的。
? SERVICE_NOT_AVAILABLE(服務不可用):表示消息服務器不可用。這可能是由于網絡故障或者消息服務器宕機引起的。
請注意,以上狀態碼僅適用于RocketMQ消息發送階段,并且并不代表消息是否成功被消費者接收。同時,這些狀態碼也可能因版本變化而有所不同,建議查閱官方文檔獲取最新信息。
2)消費測試撥測:
- 選擇消息順序,下拉選擇無序/有序,默認選項為無序。
RocketMQ是一種開源的分布式消息中間件,它支持有序消息和無序消息。
? 有序消息是指消息的消費順序與發送順序完全一致。在某些業務場景下,消息的處理需要保證順序性,例如訂單的處理或者任務的執行。RocketMQ提供了有序消息的支持,通過指定消息的順序屬性或使用消息隊列的分區機制,可以確保消息按照指定的順序進行消費。
? 無序消息則是指消息的消費順序與發送順序無關。無序消息的特點是高吞吐量和低延遲,適用于一些不要求嚴格順序的業務場景,如日志收集等。
在RocketMQ中,有序消息和無序消息的實現方式略有不同。有序消息需要借助MessageQueue的分區機制和消費者端的順序消息消費來實現。而無序消息則是通過消息的發送和接收的并發處理來實現的。
總的來說,RocketMQ既支持有序消息也支持無序消息,根據業務需求選擇合適的消息類型來滿足業務的要求。
- 選擇消費方式,目前僅提供pull方式。值得注意的是,RocketMQ還提供了推送(push)方式的消費模式,其中消息隊列服務器會主動將消息推送給消費者。但在當前僅限于pull方式的消費模式。
- 填寫消費數量。
- 下拉選擇選擇已建的消息主題和訂閱組,若無選項,請新增主題和訂閱組,詳見上文創建主題和訂閱組。
- 點擊【測試】按鈕,按照已填寫規格及數量產生消費數據,展示消息數據的信息,包括消息ID(messageID)、主題名稱(topicName)、生成時間、存儲時間、隊列ID、消費狀態。
撥測功能涉及消息消費狀態碼,RocketMQ消費狀態碼是指在消息消費過程中,對消費結果進行標識的狀態碼。以下是常見的RocketMQ消費狀態碼:
? CONSUME_SUCCESS(消費成功):表示消息成功被消費。
? RECONSUME_LATER(稍后重試):表示消費失敗,需要稍后再次進行消費。
? CONSUME_FAILURE(消費失敗):表示消息消費出現異常或失敗。
? SLAVE_NOT_AVAILABLE(從節點不可用):表示消費者無法訪問從節點來消費消息。
? NO_MATCHED_MESSAGE(無匹配的消息):表示當前沒有匹配的消息需要消費。
? OFFSET_ILLEGAL(偏移量非法):表示消費的偏移量參數不合法。
? BROKER_TIMEOUT(Broker超時):表示由于Broker超時導致消費失敗。