在activemq.xml里面
<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>
这是原始配置,可以看到不同的协议都最大支持maximumConnections = 1000个最大连接。如果连接超出,则连接不上。
可以往上加。
同时上面的配置,可以看到amqp协议使用的uri是以amqp://开头的,mqtt是以mqtt开头的。但是唯独openwire是以tcp开头的,这是因为openwire是actviemq的默认协议。
在初始配置的情况下,这些tcp协议的IO模型是BIO,BIO是同步IO,效率蛮差的。我们需要更改下,我们只需要修改uri里的协议头,添加nio即可,如下代码,修改了openwire/amqp/mqtt为nio模型.
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire+nio" uri="nio://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp+nio" uri="amqp+nio://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+nio" uri="mqtt+nio://0.0.0.0:1883?maximumConnections=10000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
值得注意的是由于openwire是默认协议,也省略了tcp,直接是nio://开头