[英]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.