1. 程式人生 > >消息隊列如何利用標簽實現消息過濾

消息隊列如何利用標簽實現消息過濾

消費者 可靠的 根據 fifo fifo隊列 分布式消息 通信 product 一個

場景介紹

一個消息隊列(MQ)存儲的消息,可以包含不同實際用途。如果這些消息不加區分,消費者每次消費都會按順序拉取消息,直到完成對所有消息的消費。如果消費者只對某一類型的消息感興趣,那麽將所有消息都消費一遍必會影響消費者處理效率。



解決方案

分布式消息服務DMS是穩定可靠的消息隊列服務,提供普通隊列、有序隊列、Kafka、ActiveMQ、RabbitMQ,兼容HTTP、TCP、AMQP協議,應用於系統解耦、異步通信、流量削峰去谷、第三方集成等場景。DMS提供消息標簽的能力,支持生產者為每條消息提供一個或多個標簽(tag)。標簽(tag)是用來區分某個 消息隊列(MQ) Topic 下的消息分類,通常情況下,標簽(tag)可以用來區分同一個 Topic 下相互關聯的消息,就像全集和子集的關系,流程先後的關系。消費者則根據標簽(tag)的內容來過濾消息,確保每個消費者最終只會消費到它感興趣的消息類型,提高消息消費效率。



以金融交易場景為例,在一種交易中可能會產生多種類型的消息,如股票(stock),基金(fund),貸款(loan)等。這些消息會通過交易(business)Topic發送到business_Topic 的隊列(MQ)中,並傳遞給不同的處理系統,如股票系統,基金系統,貸款系統,實時分析系統等。然而基金系統只關心基金類型的消息,而實時分析系統可能需要獲取到所有類型的消息,如下圖所示:

技術分享圖片


在生產消息時,生產者對每條消息加上標簽(tag),消費者在拉取消息時決定是否僅獲取帶有某標簽(tag)的消息,沒有被指明標簽(tag)的消息則不會獲取,從而大大提高了消息消費效率。如下圖所示:
技術分享圖片

增加標簽(tag)的消息消費示意圖



DMS普通隊列與FIFO隊列均支持消息標簽(tag)功能,使用DMS服務,輕松利用消息標簽實現消息過濾。想要了解DMS的更多其他特性和功能,歡迎點擊分布式消息服務DMS查看。

消息隊列如何利用標簽實現消息過濾