日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActiveMQ支持的传输协议

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ支持的传输协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?連接到ActiveMQ

 Connector:ActiveMQ提供的,用來實現連接通信的功能。包括:client-to-broker、broker-to-broker。ActiveMQ允許客戶端使用多種協議來進行連接。

    client-to-broker模式一般是配置文件中的transportConnector配置

    broker-to-broker:一般是指網絡(network)===后面學習?

?

ActiveMQ支持的client-to-broker的通信協議如下:最常用的也就是TCP和NIO

1.TCP:這個也是缺省值

2.NIO

3.UDP

4.SSL

5.Http(s)

6.VM:如果客戶端和broker在一個虛擬機內的話,通過VM協議通訊在VM內通訊,從而減少網絡傳輸的開銷

配置transportConnectors,位于conf/activemq.xml,大致如下:

<!--The transport connectors expose ActiveMQ over a given protocol toclients 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&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>

文件的注釋也注明了更詳細協議以及參數的配置參考:http://activemq.apache.org/configuring-transports.html

1.Transmission Control Protocol (TCP)---常用

1.這是默認的Broker配置,TCP的Client監聽端口是61616。

2.在網絡傳輸數據前,必須要序列化數據,消息是通過一個叫wire protocol的來序列化成字節流。默認情況下,ActiveMQ把wire protocol叫做OpenWire,它的目的是促使網絡上的效率和數據快速交互。?

3.TCP連接的URI形式:tcp://hostname:port?key=value&key=value。其中前面部分是必須的,參數是可選的
4.TCP傳輸的優點:

  TCP協議傳輸可靠性高,穩定性強。
  高效性:字節流方式傳遞,效率很高。
  有效性、可用性:應用廣泛,支持任何平臺。

2.New I/O API Protocol (NIO)---常用

1.NIO協議和TCP協議類似,但NIO更側重于底層的訪問操作。它允許開發人員對同一資源可有更多的client調用和服務端有更多的負載。

2.適合使用NIO協議的場景:
  可能有大量的Client去鏈接到Broker上可能對于Broker有一個很遲鈍的網絡傳輸NIO的實現比TCP需要更少的線程去運行,所以建議使用NIO協議。

  可能對于Broker有一個很遲鈍的網絡傳輸。


我們在上面的配置文件中增加nio的連接:

<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="nio" uri="nio://0.0.0.0:61618?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>

程序中修改對應的url即可,如下:

private static final String url = "nio://0.0.0.0:61618/";

?

3.User Datagram Protocol (UDP)

1.UDP和TCP的區別:

  (1)TCP是一個原始流的傳遞協議,意味著數據包是有保證的,換句話說,數據包是不會被復制和丟失的。UDP是不會保證數據包的傳遞的。

  (2)TCP也是一個穩定可靠的數據包傳遞協議,意味著數據在傳遞的過程中不會被丟失。這樣確保了在發送和接收之間能夠可靠的傳遞。相反,UDP僅僅是一個鏈接協議,所以它沒有可靠性之說。

2. 從上面可以得出:TCP是被用在穩定可靠的場景中使用的;UDP通常用在快速數據傳遞和不怕數據丟失的場景中,還有ActiveMQ通過防火墻時,只能用UDP。
3.?UDP連接的URI形式:udp://hostname:port?key=value

?

4. Secure Sockets Layer Protocol (SSL) 安全鏈路保護

  連接的URI形式:ssl://hostname:port?key=value

?

5.Hypertext Transfer Protocol (HTTP/HTTPS)

  1.像web和email等服務需要通過防火墻來訪問的,Http可以使用這種場合。
  2.連接的URI形式:http(https)://hostname:port?key=value

?

6.VM Protocol (VM)

1.? VM transport允許在VM內部通信,從而避免了網絡傳輸的開銷。這時候采用的連接不是socket連接,而是直接的方法調用。
2.??第一個創建VM連接的客戶會啟動一個embed VM broker(內嵌虛擬機服務),接下來所有使用相同的broker name的VM連接都會使用這個broker。當這個broker上所有的連接都關閉的時候,這個broker也會自動關閉。

3. 連接的URI形式:vm://brokerName?key=value
4. Java中嵌入的方式 vm:broker:(tcp://localhost:61616)?brokerName=embddedbroker&persistent=false

?

轉載于:https://www.cnblogs.com/qlqwjy/p/10463661.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ActiveMQ支持的传输协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。