默认协议:
Activemq默认为TCP 进行socket 网络连接。
打开activemq.xml文件,可以看到
协议 | 描述 |
---|---|
TCP | 默认的协议,性能相对可以。 |
NIO | 基于TCP协议之上,进行了扩展和优化,具有更好的扩展性 |
UDP | 性能比TCP更好,但是不具有可靠性 |
SSL | 安全连接 |
HTTP(S) | 基于HTTP 或 HTTPS |
VM | VM 本身不是协议,当客户端和代理在同一个JAVA 虚拟机中运行时,他们之间需要通信,但不想占用网络通道,而是直接通信,可以使用该方式 |
根据端口可以看出 默认为openwire
-
默认的 Broker 配置,TCP的client监听端口为61616
-
网络传输数据前,必须要序列化数据,消息是通过一个叫 wire protocol 来序列化成字节流。默认情况下ActiveMQ 把 wire protocol 叫做 openwire 它的目的是促使网络上效率和数据快速交互
-
TCP 连接的URI 形式如:tcp://hostname:port?key=value&key=value 后面参数可选
-
TCP 优点:
- 可靠性强,稳定性强
- 高效性:字节流方式传递,效率很高
- 有效性,可用性,应用广泛,执行各种平台
NIO:比 TCP 提供更好的性能
修改地址:
<transportConnector name="auto+nio" uri="auto+nio://127.0.0.1:61608?maximumConnections=1000&
wireFormat.maxFrameSize=104857600&
org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=50"/>
修改生产消费者的url为:
public static final String ACTIVEMQ_URL = "auto+nio://localhost:61616";