ActiveMQ 目前支持的transport 有:
- VM Transport、TCP Transport、SSLTransport、Peer Transport、
- UDP Transport、Multicast Transport、HTTP andHTTPS Transport、
- Failover Transport、Fanout Transport、DiscoveryTransport、ZeroConf Transport 等。
以下简单介绍其中的几种,更多请参考Apache 官方文档。
- VM Transport
- VM transport 允许在VM 内部通信,
- 从而避免了网络传输的开销。
- 这时候采用的连接不是socket 连接,
- 而是直接地方法调用。
- VM transport 允许在VM 内部通信,
- TCP Transport
- TCP transport 允许客户端通过TCP socket 连接到远程的broker。
- Failover Transport
- Failover Transport 是一种重新连接的机制,
- 它工作于其它transport 的上层,
- 用于建立可靠的传输。
- 它的配置语法允许制定任意多个复合的URI。
- Failover transport 会自动选择其中的一个URI 来尝试建立连接。
- 如果没有成功,那么会选择一个其它的URI 来建立一个新的连接。
- Failover Transport 是一种重新连接的机制,
- Discovery transport
- Discovery transport 是可靠的tranport。
- 它使用Discovery transport 来定位用来连接的URI 列表
在使用Failover Transport 或Discovery transport 等能够自动重连的transport 的时候,
- 需要注意的是:
- 设想有两个broker,
- 它们都启用AMQ MessageStore 作为持久化存储,
- 有一个producer 和一个consumer 连接到某个queue。
- 当因其中一个broker 失效时而切换到另一个 broker 的时候,
- 如果失效的broker的queue 中还有未被consumer 消费的消息,
- 那么这个queue 里的消息仍然滞留在失效broker 的中,
- 直到失效的broker 被修复并重新切换回这个被修复的broker 后,
- 之前被保留的消息才会被consumer 消费掉。
- 如果被处理的消息有时序限制,
- 那么应用程序就需要处理这个问题。
- 另外也可以通过ActiveMQ 集群来解决这个问题。
- 如果失效的broker的queue 中还有未被consumer 消费的消息,
- 设想有两个broker,