我在寻找如何通过RabbitMQ加速邮件传输的想法。
我在Windows 64位上安装了最新版本,在我的本地计算机上运行服务器,我也通过C#实现发布和使用该服务器。我最初以每秒40,000条消息的速度增加,这令人印象深刻但不符合我的需求(我与一个自定义二进制阅读器竞争,每秒可以处理2400万个未解析的16字节大字节数组;显然我不希望接近这个但是我试图改善至少)。我需要尽快发送大约115,000,000条消息。我不想保留数据,并且连接将直接针对单个消费者。然后,我构建了16b字节数组的块,并在没有任何改进的情况下发布到总线上。传输速率最高可达45mb /秒。我发现这非常慢,因为最终它应该归结为原始传输速度,因为我可以创建大小为几兆字节的字节数组,其中交换路由的效率与原始传输速度相比可以忽略不计。为什么我的消息总线最大传输速度为45mb /秒?
答案 0 :(得分:1)
Bump ......和更新:在更长的时间内没有看到这个问题的任何答案。没有一个RabbitMQ开发人员参与进来,我感到有些惊讶。我与RabbitMQ和ZeroMQ进行了广泛的合作。我认为RabbitMQ在查看高吞吐量进程内消息传递解决方案时无法胜任任务。代理实现,尤其是解析逻辑是提高吞吐量的主要瓶颈。我从可能的选项列表中删除了RabbitMQ。
有一篇白皮书描述了他们如何提供管理低延迟,高吞吐量选项财务数据流的解决方案,但听起来他们所做的就是投入硬件,而不是提供针对低延迟,高的解决方案吞吐量要求。
ZeroMQ,在我更深入地研究文档之后做了出色的工作。我可以在进程中运行通信,它提供足够稳定的推/拉,发布/订阅,请求/代表以及我需要的配对/配对模式。我一直在寻找pubM / sub模式中的阻塞逻辑,ZeroMQ没有提供它(当超过高水印时它会丢弃消息),但是推/拉模式提供阻塞。所以,几乎所有我需要的都是提供的。我唯一的抱怨是他们对事件处理的理解;通过poll / multiplex实现的事件结构不是很令人满意。