簡體   English   中英

RabbitMQ - 將具有共同屬性的消息發送給同一個消費者

[英]RabbitMQ - Send messages with common property to same consumer

背景

我有一個帶有許多機器的分布式系統。 我有兩種類型的應用程序 - 生產者和消費者。 更具體地說 - 單個生產者和多個消費者。 每個“消費者機器”都有多個消費者。

系統中的所有消息都將進入同一個隊列。 消息如下所示:

{
    "Id": "Thisismyid",
    "CacheId": "CacheID"
    ...
}

我的消費者正在應用緩存策略以更快地處理隊列消息。 一旦消費者下載了消息,就會檢查CacheId是否已經緩存過。 如果是 - 繼續。 如果沒有 - 緩存它並繼續。

同一台機器上的所有消費者共享同一個緩存存儲庫。

問題

當我有 1 個消費者時,這種結構是“最佳的”。 因為,同一台機器緩存項目並多次使用它。

隨着消費者數量的增加 - 緩存的效率正在下降。 因為它更有可能由沒有准備好使用緩存的節點下載項目。

問題

如何使用 RabbitMQ 將具有相同CacheId消息“路由”為由同一消費者\\機器處理以提高效率? RabbitMQ 資源的“成本”是多少?

您可以通過主題交換來做到這一點: https : //www.rabbitmq.com/tutorials/tutorial-five-dotnet.html

但是如果你有很多CacheId這會很快變得復雜。

但我會改用集中式緩存。 可能是Redis: https : //redis.io/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM