【发布时间】:2021-01-15 20:00:36
【问题描述】:
背景
我有一个包含许多机器的分布式系统。我有两种类型的应用程序 - 生产者和消费者。更具体地说——一个生产者和多个消费者。每台“消费机器”都有多个消费者。
系统中的所有消息都将进入同一个队列。消息如下所示:
{
"Id": "Thisismyid",
"CacheId": "CacheID"
...
}
我的消费者正在应用缓存策略以更快地处理队列消息。消费者下载消息后,将检查 CacheId 是否先前已缓存。如果是 - 继续。如果没有 - 缓存它并继续。
同一台机器上的所有消费者共享同一个缓存库。
问题
当我有 1 个消费者时,这种结构是“最佳的”。因为,同一台机器会缓存这些项目并多次使用它。
随着消费者数量的增加 - 缓存的效率正在下降。因为它更有可能 项目将由没有准备好使用缓存的节点下载。
问题
如何使用 RabbitMQ 将具有相同 CacheId 的消息“路由”为由同一消费者\机器处理以提高效率?就 RabbitMQ 资源而言,“成本”是多少?
【问题讨论】:
标签: rabbitmq queue message-queue