【问题标题】:Message Broker Queues and MessageType消息代理队列和消息类型
【发布时间】:2011-02-21 03:02:14
【问题描述】:

划分消息队列的标准智慧和注意事项是什么?

假设消息数量相对较少(

我能想到的几个可能的考虑因素:

  • 至少在我对 ActiveMQ 的有限了解中,看起来读/写安全性是每个队列的。因此,需要不同读/写权限的消息类型需要不同的队列。
  • 消息选择器似乎需要一个标准的标头值 (MessageType: AbcMessage) 来过滤
  • 队列爆炸(> 10、> 100、> 1000?)似乎比消息爆炸更能影响性能
  • 每个队列的单一消息类型似乎更容易为其编写客户端代码。只需处理队列中的每条消息。如果您想要不同的消息类型,请订阅不同的队列。
  • ???

【问题讨论】:

    标签: message-queue activemq nservicebus messagebroker


    【解决方案1】:

    任何给定的 MQ 系统都应该能够处理任何给定队列中的数百万条消息,我一点也不担心。

    我更喜欢具有不同现实意义的队列,而不是担心选择器。我知道有真正的理由使用选择器或消费和重新排队,但我更喜欢使队列不同,而不是担心选择。

    【讨论】:

      【解决方案2】:

      由于没有真正解决这个问题,并且您在问题中询问了这个问题(当我发现这个问题时我正在寻找它),我想我可以插话我如何能够过滤单个消息, 按类型排列的异构队列。

      如果您查看here,您会发现用户定义的属性适用于所有名为JMSType 的消息。这是String,默认为空。当您发送消息时,让您的生产者将其设置为约定的值,例如 maptext,然后,在您的消费者中,根据您想要的消息类型使用特定的消息选择器收到。使用相同的示例,它将是 JMSType = 'map'JMSType = 'text'

      我能够使用ActiveMQ-CPP 库成功地将这种技术与 Java 生产者和 C++ 消费者一起使用。

      【讨论】:

        猜你喜欢
        • 2018-10-08
        • 2012-10-11
        • 2019-12-12
        • 2012-06-03
        • 2015-12-16
        • 2017-06-14
        • 2015-10-21
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多