最近我开始使用ActiveMQ在我的新项目中充当消息中间件,这是我第一次尝试使用ActiveMQ,之前我参与过的项目使用了我们之前公司的内部消息框架,如Swallow。所以在开始实现系统之前,我需要清除一些设计点。
我们系统中的案例将使用ActiveMQ包括发送邮件,将任务发送到队列以及从队列执行任务,异步请求/响应,那么什么样的协议和网络连接是我们案例的正确选择?我在这里列出了一些协议和网络连接选项:
ActiveMQ协议:
MQTT
WS
Openwire
Stomp
Stomp
ActiveMQ网络连接:
VM
TCP
UDP
HTTP
Failover
Discovery
我还会考虑系统中HA和群集的各个方面,那么有人可以给我一些想法来决定如何选择协议和网络连接吗?
非常感谢。
答案 0 :(得分:3)
Openwire历来是默认协议,NIO传输可以通过TCP提供性能改进,因此如果您使用ActiveMQ作为您唯一的代理使用其中一个。但是,在将来使用AMQP意味着您可以使用另一个流行的Message Broker RabbitMQ。还有其他一些,STOMP或MQTT是轻量级的,VM被设计为当应用程序与代理驻留在同一台机器上时使用,因此获得非常高的吞吐量。
由于ActiveMQ可以默认启用所有协议,因此需要进行一些快速测试,以了解您正在构建的特定应用程序的吞吐量。然后在做出决定时考虑以上几点。
关于UDP,TCP,HTTP我会选择TCP。 UDP是不可靠的,TCP足以发送每秒1000秒。如果您的公司具有笨拙的防火墙规则,HTTP可能很有用。
我会将其包装在故障转移传输中。我从未使用过发现,但会认为这是更高级的,最初并不需要,因为它需要一个发现代理。它唯一的目的是动态发现ActiveMQ代理(尽管你仍然需要知道发现代理的位置)。