RabbitMQ-向同一使用者发送具有公共属性的消息 背景

RabbitMQ-向同一使用者发送具有公共属性的消息 背景,rabbitmq,queue,message-queue,Rabbitmq,Queue,Message Queue,我有一个有许多机器的分布式系统。我有两种类型的应用程序-生产者和消费者。更具体地说,一个生产者和多个消费者。每个“消费者机器”都有多个消费者 系统中的所有消息都将进入同一队列。消息如下所示: { "Id": "Thisismyid", "CacheId": "CacheID" ... } 我的消费者正在应用缓存策略,以便更快地处理队列消息。消费者下载消息后,将检查CacheId之前是否已缓存

我有一个有许多机器的分布式系统。我有两种类型的应用程序-生产者和消费者。更具体地说,一个生产者和多个消费者。每个“消费者机器”都有多个消费者

系统中的所有消息都将进入同一队列。消息如下所示:

{
    "Id": "Thisismyid",
    "CacheId": "CacheID"
    ...
}
我的消费者正在应用缓存策略,以便更快地处理队列消息。消费者下载消息后,将检查
CacheId
之前是否已缓存。如果是-继续。如果否-缓存它并继续

同一台计算机上的所有使用者共享同一个缓存存储库

问题 当我有一个消费者时,这种结构是“最优的”。因为,同一台机器缓存项目并多次使用

随着消费者数量的增加,缓存的效率也在下降。因为它更有可能 将由没有现成缓存的节点下载项目

问题
如何使用RabbitMQ将具有相同
CacheId
的消息“路由”到同一消费者\机器的进程,以提高效率?RabbitMQ资源的“成本”是多少?

您可以通过主题交换做到这一点:

但如果您有许多
CacheId
,这将很快变得复杂

但我会使用集中式缓存。可能是Redis: