【问题标题】:Rabbit MQ: Improve queue flushing speedRabbitmq:提高队列刷新速度
【发布时间】:2013-03-18 18:00:59
【问题描述】:

我有一个保存持久消息的持久队列。消息以大约每秒 10 条消息的速度进入队列。

客户端无法以该速率获取这些消息。因此,服务器上的队列不断增长。

每条消息小于 1 KB,并且我在服务器和我的机器之间有一条健康的 2 Mbps 线路。使用网络监控实用程序,我发现它几乎没有使用任何带宽。

到目前为止,客户端没有对消息做任何事情,只是将它们打印到控制台,因此客户端的处理时间几乎为 0。

其他一些细节: 我正在使用 java 客户端。 我已将客户端设置为预取 10000 条消息。 (也尝试使用默认值) 往返时间约为 350 毫秒。 消息被单独确认。

可用资源未得到充分利用,我认为每秒 10 条消息几乎没有任何负载。如何加快速度,以便队列中的消息更快地传输到客户端。可能使用某种批处理。

【问题讨论】:

    标签: java rabbitmq


    【解决方案1】:

    如果您每 350 毫秒单独确认一次消息,我预计消费者每秒可能会收到大约 1/0.35 或大约 2.9 条消息。但是,该协议可能效率不高,可能需要两次往返服务器才能确认消息并获取下一个消息。即每秒 1.4 条消息可能更现实。

    350 毫秒的往返时间非常高,您可以在这段时间内环游世界并再次返回,因此简单的解决方案可能不适合您。例如伦敦 -> 纽约 -> 东京 -> 伦敦。

    我会尝试让您的客户本地代理。这样一来,您的客户和您当地的经纪人之间就可以进行往返。

    【讨论】:

    • 我预取了 10000 条消息。因此服务器可以推送更多消息而无需等待 ACK。对吗?
    • 我会检查设置是否适用于这种情况。即使可以预取,也可能需要与代理核对以提交更改。
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    相关资源
    最近更新 更多