Apache ActiveMQ 支持多种传输协议,这些协议使得客户端能够以不同的方式与消息代理(Broker)进行通信。以下是一些ActiveMQ支持的主要传输协议:
-
TCP (Transmission Control Protocol):
- 这是ActiveMQ的默认传输协议,使用OpenWire协议实现高级功能,如性能优化和多线程处理。
- 默认监听端口为61616。
-
NIO (Non-blocking I/O):
- 使用Java NIO框架来提高网络I/O效率,特别适合于高吞吐量、低延迟的应用场景。
-
SSL/TLS (Secure Sockets Layer/Transport Layer Security) over TCP:
- 提供安全的网络连接,通过加密数据传输确保消息的安全性。
-
AMQP 1.0 (Advanced Message Queuing Protocol):
- 开放标准的消息传递协议,允许不同供应商的消息中间件之间互操作。
-
STOMP (Simple Text Oriented Messaging Protocol):
- 简单文本协议,适用于多种编程语言和环境,常用于WebSockets和脚本语言。
-
HTTP and HTTPS (Hypertext Transfer Protocol / Secure Hypertext Transfer Protocol):
- 允许通过标准HTTP或HTTPS接口发送和接收消息,这有助于在防火墙限制严格的环境中穿透网络。
-
VM Transport:
- 在同一JVM内提供高效的消息传输,通常用于测试或者在同一服务器上运行的多个应用之间的内部通信。
-
UDP (User Datagram Protocol):
- 虽然不常用作主要的消息传递协议,但在某些需要广播或多播机制的场景下可能有用。
-
Multicast:
- 利用IP多播技术,在一组特定的主机间传播消息。
开发者可以根据具体需求选择合适的传输协议,并在activemq.xml
配置文件中设置相应的transportConnector
元素来启用和配置所选协议。例如,可以通过编辑配置文件来开启SSL连接器:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ssl" uri="ssl://0.0.0.0:61617?transport.enabledProtocols=TLSv1.2&keyStorePath=broker.ks&trustStorePath=broker.ts"/>
</transportConnectors>
请注意,实际支持的协议可能会随着ActiveMQ版本的更新而有所变化或增加新特性。