【问题标题】:How to choose the right protocol and network connection for using ActiveMQ?如何选择正确的协议和网络连接来使用 ActiveMQ?
【发布时间】:2015-09-14 09:26:20
【问题描述】:

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

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

ActiveMQ 协议

  1. MQTT
  2. WS
  3. Openwire
  4. Stomp
  5. Stomp

ActiveMQ 网络连接

  1. VM
  2. TCP
  3. UDP
  4. HTTP
  5. Failover
  6. Discovery

我也会为我的系统考虑HA和集群的方面,所以任何人都可以给我一些想法来决定如何选择协议和网络连接?

非常感谢。

【问题讨论】:

    标签: java activemq protocols message


    【解决方案1】:

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

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

    关于 UDP、TCP、HTTP,我会选择 TCP。 UDP 不可靠,而 TCP 在每秒发送 1000 个数据方面绰绰有余。如果您的公司有笨拙的防火墙规则,HTTP 可能会很有用。

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

    【讨论】:

      猜你喜欢
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2017-04-13
      • 1970-01-01
      • 2021-01-11
      • 2015-03-06
      • 1970-01-01
      相关资源
      最近更新 更多