ActiveMQ的cilent-to-broker的連接,叫做傳輸連接(Transport connectors),broker-to-broker間的連接,叫做網絡連接(Network connectors)。
ActiveMQ支持許多種客戶端與服務器的傳輸連接。分別是TCP,NIO,UDP,SSL,HTTP(S),VM,AMQP,MQTT,Peer,Multicast,WebSockets。
使用方法是指定連接Broker URI。URI scheme是傳輸連接名稱,path是Broker的IP地址和端口號,另外可以使用Key Value形式的Query串作爲參數,如:tcp://localhost:61616?trace=true。而且各個協議之間可以組合,使用方式如:amqp+ssl://localhost:5671。
爲ActiveMQ服務器配置多協議支持的方法是,編輯%ACTIVEMQ_HOME%conf\activemq.xml文件。此文件是ActiveMQ的配置文件。編輯<transportConnectors>節點,配置片段如下:
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://localhost:61616" />
- <transportConnector name="ssl" uri="ssl://localhost:61617"/>
- <transportConnector name="stomp" uri="stomp://localhost:61613"/>
- <transportConnector name="ws" uri="ws://localhost:61614/" />
- <transportConnector name="amqp+ssl" uri="amqp+ssl://localhost:5671/" />
- </transportConnectors>
TCP:ActiveMQ默認的傳輸連接,也是最常用的使用方式。長連接,每個客戶端實例都會與服務器維持一個連接。每個連接一個線程。TCP的優點是:
性能高:ActiveMQ使用默認協議OpenWire序列化和反序列化消息。OpenWire是一個性能很高的序列化協議。
可用性高:TCP是使用最廣泛的技術,幾乎所有的開發語言都支持TCP協議。
可靠性高:TCP協議確保消息不會在網絡傳說的過程中丟失。
tcp配置:
- <transportConnector name="tcp" uri="tcp://localhost:61616"/>
NIO:使用Java的NIO方式對連接進行改進,因爲NIO使用線程池,可以複用線程,所以可以用更少的線程維持更多的連接。如果有大量的客戶端,或者性能瓶頸在網絡傳輸上,可以考慮使用NIO的連接方式。也可以根據不同的場景選擇不用的傳輸連接,比如:Producer有很多,但是Consumer很少,可以Producer用NIO協議,Consumer用TCP協議。從ActiveMQ 5.6版本開始,NIO可以支持和SSL搭配使用的傳輸連接。
nio配置:
- <transportConnector name="nio" uri="nio://localhost:61616"/>
- <transportConnector name="nio+ssl" uri="nio+ssl://localhost:61616"/>
udp配置:
- <transportConnector name="udp" uri="udp://localhost:8123"/>
ssl配置:
- <transportConnector name="ssl" uri="ssl://localhost:8123"/>
http配置:
- <transportConnector name="http" uri="http://localhost:8080"/>
https配置:
- <transportConnector name="https" uri="https://localhost:8080"/>
- <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="broker">
- <property name="brokerURL" value="vm://localhost"/>
- </bean>
amqp配置:
- <transportConnector name="amqp" uri="amqp://localhost:5672"/>
- <transportConnector name="amqp+nio" uri="amqp+nio://localhost:5672"/>
amqp+ssl配置:
- <transportConnector name="amqp+ssl" uri="amqp+ssl://localhost:5672"/>
MQTT:ActiveMQ 5.8新增加的傳輸連接。是一個輕量級的消息訂閱/發佈協議。和AMQP一樣,同樣支持搭配NIO或SSL使用。
mqtt配置:
- <transportConnector name="mqtt" uri="mqtt://localhost:1883"/>
mqtt+nio配置:
- <transportConnector name="mqtt+nio" uri="mqtt+nio://localhost:1883"/>
mqtt+ssl配置:
- <transportConnector name="mqtt+ssl" uri="mqtt+ssl://localhost:1883"/>
其他:Peer,Multicast,WebSockets。由於使用場景較少,先暫時不介紹了。