如何使用ActiveMQ选择正确的协议和网络连接?

时间:2015-09-14 09:26:20

标签: java activemq protocols message

最近我开始使用ActiveMQ在我的新项目中充当消息中间件,这是我第一次尝试使用ActiveMQ,之前我参与过的项目使用了我们之前公司的内部消息框架,如Swallow。所以在开始实现系统之前,我需要清除一些设计点。

我们系统中的案例将使用ActiveMQ包括发送邮件,将任务发送到队列以及从队列执行任务,异步请求/响应,那么什么样的协议和网络连接是我们案例的正确选择?我在这里列出了一些协议和网络连接选项:

ActiveMQ协议

  1. MQTT
  2. WS
  3. Openwire
  4. Stomp
  5. Stomp
  6. ActiveMQ网络连接

    1. VM
    2. TCP
    3. UDP
    4. HTTP
    5. Failover
    6. Discovery
    7. 我还会考虑系统中HA和群集的各个方面,那么有人可以给我一些想法来决定如何选择协议和网络连接吗?

      非常感谢。

1 个答案:

答案 0 :(得分:3)

Openwire历来是默认协议,NIO传输可以通过TCP提供性能改进,因此如果您使用ActiveMQ作为您唯一的代理使用其中一个。但是,在将来使用AMQP意味着您可以使用另一个流行的Message Broker RabbitMQ。还有其他一些,STOMP或MQTT是轻量级的,VM被设计为当应用程序与代理驻留在同一台机器上时使用,因此获得非常高的吞吐量。

由于ActiveMQ可以默认启用所有协议,因此需要进行一些快速测试,以了解您正在构建的特定应用程序的吞吐量。然后在做出决定时考虑以上几点。

关于UDP,TCP,HTTP我会选择TCP。 UDP是不可靠的,TCP足以发送每秒1000秒。如果您的公司具有笨拙的防火墙规则,HTTP可能很有用。

我会将其包装在故障转移传输中。我从未使用过发现,但会认为这是更高级的,最初并不需要,因为它需要一个发现代理。它唯一的目的是动态发现ActiveMQ代理(尽管你仍然需要知道发现代理的位置)。