java - 兔子MQ : Improve queue flushing speed

标签 java rabbitmq

我有一个持久队列,用于保存持久消息。消息以每秒大约 10 条消息的速度到达队列。

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

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

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

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

可用资源未得到充分利用,在我看来,每秒 10 条消息几乎算不上什么负载。如何加快处理速度,以便将队列中保留的消息更快地传输到客户端。可能使用某种批处理。

最佳答案

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

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

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

关于java - 兔子MQ : Improve queue flushing speed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679461/

相关文章:

java - 使用 JUnit 运行测试用例时,在 Eclipse 调试中禁用拖放到框架功能

java - Spring @Cacheable注解用于不同服务中的相同方法

java - 用 Java 和 Android 构建个人图书馆

Rabbitmq 启动失败

grails - Rabbitmq:手动创建的用户无法正常工作

python - Celery pickle type content disallowed 错误

JavaEE/NetBeans 库引用

java - 在Java中创建数组而不设置对象数量?

java - 为用户在应用程序中创建的每个主题创建一个新队列

rabbitmq - 在配置文件中定义Rabbitmq策略