【问题标题】:RabbitMQ - Send messages with common property to same consumerRabbitMQ - 将具有共同属性的消息发送给同一消费者
【发布时间】:2021-01-15 20:00:36
【问题描述】:

背景

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

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

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

我的消费者正在应用缓存策略以更快地处理队列消息。消费者下载消息后,将检查 CacheId 是否先前已缓存。如果是 - 继续。如果没有 - 缓存它并继续。

同一台机器上的所有消费者共享同一个缓存库。

问题

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

随着消费者数量的增加 - 缓存的效率正在下降。因为它更有可能 项目将由没有准备好使用缓存的节点下载。

问题

如何使用 RabbitMQ 将具有相同 CacheId 的消息“路由”为由同一消费者\机器处理以提高效率?就 RabbitMQ 资源而言,“成本”是多少?

【问题讨论】:

    标签: rabbitmq queue message-queue


    【解决方案1】:

    您可以通过主题交换来做到这一点:https://www.rabbitmq.com/tutorials/tutorial-five-dotnet.html

    但是如果你有很多CacheId,这很快就会变得复杂。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 2017-02-07
      相关资源
      最近更新 更多