我们使用RabbitMQ在应用程序之间传输消息。当它们位于单个LAN内时,传输速度非常快。不幸的是,当应用程序在不同的机器上,通过WAN(在VPN中)连接时,存在很大的延迟。 是否可以通过在RabbitMQ服务器或客户端中设置选项(例如缓冲区大小)来减少它?有没有人在这个领域有一些经验?
我们使用一个具有多个通道的连接,队列是持久的,并且消息是持久的。我们将预取计数设置为50.每个队列只有一个消费者。我们想知道Windows防火墙是否具有一定的重要性。
编辑:我们在Erlang R15B01上运行RabbitMQ 2.8.4 在客户方:
> RabbitMQ version 3.4.0.0 platform .NET copyright Copyright (C)
> 2007-2014 GoPivotal, Inc. information Licensed under the MPL. See
> http://www.rabbitmq.com/ capabilities publisher_confirms: true
> exchange_exchange_bindings: true basic.nack: true
> consumer_cancel_notify: true connection.blocked: true
> authentication_failure_close: true
交付:4.8 / s确认4.8 / s我们没有进行大转移。
http://i.stack.imgur.com/v7BEs.png
http://i.stack.imgur.com/n8P05.png
此外,我们正在通过.NET app与PHP应用程序进行通信 RabbitMQ采用这种策略:1。.NET应用程序具有持久队列 当PHP发出请求时,等待来自PHP 2的请求 也是一个非持久的uniqe队列,用于侦听来自服务器的响应。
这个策略会产生很多uniq队列来发送响应 传真消息后删除的PHP应用程序。
无论如何,这在同一台机器上运行速度非常快,在WAN上运行速度非常慢