编号 | 说明 |
---|---|
C_2021-03-05 | 第一次创建 |
协议
这些配置信息都是在broker标签里的,包括前面写的persistenceAdaptor。在实际使用中,如果想要让broker支持某一个或者某几个传出协议的话,可以更改broker中transportConnectors标签下的属性。下面粘贴出了activemq.xml中的配置信息,也是默认的配置信息。
<!--
The transport connectors expose ActiveMQ over a given protocol to
clients and other brokers. For more information, see:
http://activemq.apache.org/configuring-transports.html
-->
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
更多协议的详解,参见官网ActiveMQ协议
TCP
broker中默认的传输协议,默认端口号是61616。
与其他协议不同,上面实例中,其他写的uri内容的开头,就是name中的值。只有和这个是个例外。在网络传输数据前,必须要序列化数据,消息是通过一个叫 wire protocol 的来序列化成字节流。默认情况下,ActiveMQ把wire protocol叫做OpenWire,它的目的是促使网络上的效率和数据快速交互。
TCP连接的URI形式:tcp://hostname:port?key=value&key=value
上面连接中的参数是可选的。
NIO
NIO与TCP类似,但是NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务端有更多的负载。
<transportConnectors>
<!--tcp-->
<transportConnector name="openwire" uri="tcp://localhost:61616?trace=true" />
<!--nio-->
<transportConnector name="nio" uri="nio://localhost:61618?trace=true" />
</transportConnectors>
下面是官网的截图。
UDP
UDP仅仅是一个链接协议,所以它没有可靠性之说。
TCP是被用在稳定可靠的场景中使用的;
UDP通常用在快速数据传递和不怕数据丢失的场景中,还有ActiveMQ通过防火墙时,只能用UDP。下面给出了UDP的链接用例。
<transportConnectors>
<transportConnector name="udp" uri="udp://localhost:61618?trace=true" />
</transportConnectors>
SSL
与上面的类似,在使用SSL协议的时候,需要进行如下配置。
<transportConnectors>
<transportConnector name="ssl" uri="ssl://localhost:61617?trace=true"/>
</transportConnectors>
HTTP/HTTPS
像web和email等服务需要通过防火墙来访问的,Http可以使用这种场合。
在使用HTTP/HTTPS的时候,链接格式是:
- http://hostname:port?key=value
- https://hostname:port?key=value
对应配置:
<transportConnectors>
<transportConnector name="http" uri="http://localhost:8080?trace=true" />
</transportConnectors>