0

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

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

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

到目前为止,客户端对消息什么都不做,只是将它们打印到控制台,因此客户端的处理时间几乎为 0。

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

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

4

1 回答 1

1

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

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

我会尝试在您的客户本地找一个经纪人。这样,往返就在您的客户和您当地的经纪人之间。

于 2013-03-28T10:35:17.097 回答