【问题标题】:Architecture issue: ActiveMQ and long queue架构问题:ActiveMQ 和长队列
【发布时间】:2012-12-02 10:02:40
【问题描述】:

我们使用 AMQ 将数千条消息从 app1 发送到 app2。 App2 通过 http 连接将所有这些消息发送给客户端 但是现在我们遇到了一个问题,如果一些客户端消耗他们的消息很慢,所有其他客户端都在等待,因为 AMQ 会一一发送消息,所以慢速客户端的消息会长时间阻塞其他客户端。

非常感谢任何解决此类问题的想法

【问题讨论】:

    标签: queue jms activemq


    【解决方案1】:

    您需要详细说明 App2 如何通过 HTTP 发送消息。从本质上讲,您需要设计独立于客户端的部分,以便一旦您向至少一个客户端发送消息,您就需要准备好下一条消息。

    也许 APP2 中的一些内部队列数据结构可以将每条消息放入每个客户端的唯一队列中。然后每个客户端可以按照自己的速度吃掉每个队列。

    根据您的要求和客户端总数,您甚至可能希望在 ActiveMQ 服务器上为每个客户端放置一个队列,并让 Pub/Sub pattern 将消息放入每个客户端队列。如果客户端数量有限,这可能可以实现。

    【讨论】:

    • thx Petter,我们也考虑过,但是我们有太多的客户端,所以很难为每个客户端配置队列,而且我们无法从队列中读取消息并将它们保存在内存中,因为以防万一App2 我们丢失了太多消息。我们正在考虑 nosql 解决方案。
    • 当然,如果你真的想要持久性,数据库可能是一个不错的想法,nosql 或标准。只是为了确保,具有多个客户端的发布/订阅不应该是真正的配置问题,问题在于保持许多订阅消费者,资源明智。无论哪种情况,逻辑都是微不足道的
    猜你喜欢
    • 2010-09-30
    • 2016-10-23
    • 2018-07-16
    • 2023-03-16
    • 2014-10-16
    • 2014-06-27
    • 2016-10-29
    • 2011-10-12
    • 1970-01-01
    相关资源
    最近更新 更多