2013-03-28 62 views
0

我有一个持久的队列,持有持久的消息。消息以每秒大约10条消息的速率进入队列。兔子MQ:提高队列冲洗速度

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

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

客户是做什么用的消息,截至目前,只是将它们打印在客户端控制台,以便处理时间几乎为0。

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

可用资源未充分利用,我认为每秒10封邮件几乎没有任何负载。我如何加快速度,让队列中的消息更快地传递给客户端。可能使用某种配料。

回答

1

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

350毫秒的往返程度非常高,您可以在世界各地再次回来,因此一个简单的解决方案可能不适合您。例如伦敦 - >纽约 - >东京 - >伦敦。

我会尝试有一个经纪人本地到您的客户端。这种方式往返于客户和当地经纪人之间。

+0

我有一个10000条消息的预取。所以服务器可以在不等待ACK的情况下推送更多的消息。对? – Dojo 2013-03-28 10:42:57

+0

我会检查设置适用于这种情况。即使可以预取,也可能需要与经纪商确认是否提交更改。 – 2013-03-28 11:38:00