activemq修改IO模型和最大連線數

JAVA道人發表於2020-12-19

在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&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;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&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp+nio" uri="amqp+nio://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt+nio" uri="mqtt+nio://0.0.0.0:1883?maximumConnections=10000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

值得注意的是由於openwire是預設協議,也省略了tcp,直接是nio://開頭

相關文章