ActiveMQ支持哪些协议
支持的协议
ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种协议连接。
ActiveMQ支持的协议:AUTO、OpenWire、AMQP、Stomp、MQTT等
ActiveMQ支持的基础传输方式:VM、TCP、SSL、UDP、Peer、Multicase、HTTP(S)等,以及更高级的Failover、Fanout、Discover、ZeroConf方式。
AcitveMQ的协议连接配置
在${ACTIVEMQ_HOME}/conf/activemq.xml中,通过配置就可以时候用多种传输方式。
数据传输方式
TCP
由于TCP具有可靠性传输的特性,它在ActiveMQ中也是最常使用的一种协议。在默认的配置中,TPC连接的端口为61616。
TCP配置格式
tcp://hostname:port?key=value
TCP配置参数说明
在服务端配置时,参数要以“transport.”开头,客户端连接时,参数省略“transport.”前缀
tcp:localhost:61616?transport.threadName&transport.trace=false&transport.soTimeout=
tcp:localhost:61616?threadName&trace=false&soTimeout=60000
属性 | 默认值 | 描述 |
---|---|---|
backlog | 5000 | 等待接收最大连接数 |
connectionTimeout | 30,000 0 | 表没有超时,负值忽略,>=1才有超时时间 (毫秒) |
deamon | false | 如果为true,则传输线程将以守护进程模式运行。嵌入为true |
dynamicManagement | false | 如果为true,则可以通过JMX管理transportLogger。 |
ioBufferSize | 8 * 1024 | 协议解析使用的缓冲区的大小 |
jmxPort | 1099 | JMX端口(仅客户端有效) |
keepAlive | false | 如果为true,则在Borken链接上启用TCP KeepAlive,以防止连接在TCP级别超时。这不要和InactivityMonitor使用的KeepAliveInfo消息混淆 |
maximumConnections | Integer.MAX_VALUE | borker允许的最大socket数量 |
socketBufferSize | 64 * 1024 | 设置接收的套接字读写缓冲区的大小(以字节为单位) |
soLinger | Integer.MIN_VALUE | 当设置> -1时,设置套接字的选项soLinger;设置为-1时,将禁用soLinger套接字选项。 |
soTimeou | 0 | 设置套接字的读取超时(以ms为单位),0表示没有超时 |
soWriterTimeout | 0 | 设置套接字的写取超时(以ms为单位),0表示没有超时 |
stackSize | 0 | 设置服务端后台读取线程的堆栈大小,必须以128k的倍数指定;值为0表示忽略此参数。 |
startLongging | true | true,将传输信息transportLong对象写入日志。仅在tract=true的场景下生效 |
tcpNoDelay | false | 如果为true,则设置套接字的选项TCP_NODELAY。这会禁用Nagle的小数据包传输算法。 |
threadName | N/A | 指定调用transport的线程名称。例如以服务器Host命名,调试线程的时候可以看到。 |
trace | false | 为true时,服务器记录传输发送的所有命令内容。log4j.logger.org.apache.activemq.TransportLogger=DEBUG |
trafficClass | 0 | ip协议级别的服务质量参数。(0x02,0x04,0x08,0x10) |
useInactiveltyMonitor | true | false,则禁用InactivityMonitor,链接永远不会超时 |
useKeepAlive | true | true,在空闲链接上发送keepAliveInfo消息,防止它超时。false,指定的时间内没有接收到数据,链接超时。 |
SSL
需要一个安全连接的时候可以考虑使用SSL,适用于client和borker在公网的情况,如使用aws云平台等,基于TCP优化调整
http://activemq.apache.org/ssl-transport-reference.html
SSL配置格式
可配置参数和TCP相同
ssl://localhost:61616
SSL客户端配置
JMS客户端需要使用ActiveMQSslConnectionFactory类创建连接,borkerUrl以ssl://开头,以下是spring配置示例
<bean id="AMQJMSConnectionFactory" class="org.apache.activemq.ActiveMQSslConnectionFactory">
<property name="trustStore" value="/path/to/truststore.ts"/>
<property name="trustStorePassword" value="password"/>
<property name="keyStore" value="/path/to/truststore.ks"/>
<property name