我有一个持久的队列来保存持久性消息。消息以大约每秒10条消息的速率到达队列。
客户端无法以该速率获取这些消息。结果,服务器上的队列不断增长。
每封邮件小于1 KB,我在服务器和我的机器之间有一条健康的2 Mbps线路。使用网络监控实用程序,我发现它几乎不使用任何带宽。
客户端现在对消息一无所知,只是将它们打印到控制台,因此客户端的处理时间几乎为0。
其他一些细节: 我正在使用java客户端。 我已将客户端设置为预取10000条消息。 (也尝试使用默认值) 往返时间约为350毫秒。 消息是单独确认的。
我认为可用资源未得到充分利用,每秒10条消息几乎没有任何负担。如何加快速度,使队列中的消息更快地传输到客户端。可能使用某种批处理。
答案 0 :(得分:1)
如果您每隔350毫秒独立地确认消息,我预计消费者可能会达到每秒约1 / 0.35或约2.9条消息。但是,协议可能效率不高,可能需要两次往返服务器以确认消息并获取下一个消息。即每秒1.4条消息可能更为真实。
350毫秒的往返非常高,你可以在世界各地再回来,所以一个简单的解决方案可能不适合你。例如伦敦 - >纽约 - >东京 - >伦敦。
我会尝试在您的客户端本地拥有经纪人。这样往返就在您的客户和当地经纪人之间。