【发布时间】:2012-12-02 10:02:40
【问题描述】:
我们使用 AMQ 将数千条消息从 app1 发送到 app2。 App2 通过 http 连接将所有这些消息发送给客户端 但是现在我们遇到了一个问题,如果一些客户端消耗他们的消息很慢,所有其他客户端都在等待,因为 AMQ 会一一发送消息,所以慢速客户端的消息会长时间阻塞其他客户端。
非常感谢任何解决此类问题的想法
【问题讨论】:
我们使用 AMQ 将数千条消息从 app1 发送到 app2。 App2 通过 http 连接将所有这些消息发送给客户端 但是现在我们遇到了一个问题,如果一些客户端消耗他们的消息很慢,所有其他客户端都在等待,因为 AMQ 会一一发送消息,所以慢速客户端的消息会长时间阻塞其他客户端。
非常感谢任何解决此类问题的想法
【问题讨论】:
您需要详细说明 App2 如何通过 HTTP 发送消息。从本质上讲,您需要设计独立于客户端的部分,以便一旦您向至少一个客户端发送消息,您就需要准备好下一条消息。
也许 APP2 中的一些内部队列数据结构可以将每条消息放入每个客户端的唯一队列中。然后每个客户端可以按照自己的速度吃掉每个队列。
根据您的要求和客户端总数,您甚至可能希望在 ActiveMQ 服务器上为每个客户端放置一个队列,并让 Pub/Sub pattern 将消息放入每个客户端队列。如果客户端数量有限,这可能可以实现。
【讨论】: