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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ActiveMQ网络连接器

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ网络连接器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇文章對我和任何對網絡連接器如何為ActiveMQ工作感興趣的ActiveMQ貢獻者而言都是更多的內容。 我最近花了一些時間查看代碼,并認為最好畫一些快速的圖表來幫助我記住我學到的東西,并在將來發現問題時幫助將來確定在哪里進行調試。 如果我輸入有誤,并且您想添加說明,請在評論中添加。 首先,通過在ActiveMQ配置文件中對其進行配置來設置網絡連接器。 使用xbean庫將此配置映射到相應的ActiveMQ bean,對此我有一個單獨的博客文章 ,其中確切解釋了如何完成此工作。 要指定網絡連接器,請將<networkConnectors/>元素添加到配置文件中,然后添加<networkConnector/> , <multicastNetworkConnector/>或<ldapNetworkConnector/> 。 這三種不同類型的網絡連接器可用于建立代理網絡,其中<networkConnector/>最常見。 這是三個映射到Java類的方式: <networkConnector/>映射到org.apache.activemq.network.DiscoveryNetworkConnector <multicastNetworkConnector/>映射到org.apache.activemq.network.MulticastNetworkConnector <ldapNetworkConnector/>映射到org.apache.activemq.network.LdapNetworkConnector 每個繼承自org.apache.activemq.network.NetworkConnector超級類型,如下圖所示: 因此,當您具有如下配置時: <networkConnector uri="static://(tcp://localhost:61626,tcp://localhost:61627)" /> 一個新的DiscoverNetworkConnector將被配置,實例化,并作為連接器添加到BrokerService(這是處理許多ActiveMQ代理詳細信息的主要類)。 從配置中組裝DiscoverNetworkConnector時,您指定的URI用于創建DiscoveryAgent。 發現代理負責組裝連接并處理打包為DiscoverEvents的故障轉移事件。 確定選擇哪個DiscoverAgent取決于DiscoverAgentFactory和指定的URI。 在“靜態”的情況下,使用SimpleDiscoverAgent。 可能的URI列表中的每個URI都有不同的處理方式,并為其分配了自己的傳輸(此操作將在幾秒鐘內完成)。 這意味著,對于您列出的每個URI,將建立一個新的套接字,并且代理將嘗試在每個套接字上建立網絡連接器。 您可能想知道如何最好地實施故障轉移? 在上述情況下,您將有多個連接,并且如果這些連接之一是到未監聽的從屬的連接,您將看到該連接失敗,并且發現代理嘗試再次建立連接。 這可能會無限持續下去,從而消耗資源。 另一種方法是對使用failover()邏輯的靜態發現代理僅使用一個URI: <networkConnector uri="static:failover:(tcp://localhost:61626,tcp://localhost:61627)" /> 在這種情況下,將僅創建一個傳輸,并且故障轉移邏輯將對其進行包裝并了解兩個URI。 如果一個不可用,它將不會繼續不必要地重試。 相反,它將連接到它可以連接的任何一個,并且僅在當前連接斷開時才重新連接到故障轉移URL。 請注意,此方法在ActiveMQ 5.5.1.-fuse-00-06版本之前存在一個錯誤。 發現代理負責創建網橋,但它將該職責委托給DiscoverListener。 在上面的示例中,DiscoverListener接口由DiscoverNetworkConnector.onServiceAdd()方法實現。 為了建立網橋,將為本地代理(使用VM)和遠程代理(使用指定的協議,在本例中為TCP)打開傳輸。 一旦創建了本地和遠程傳輸,就可以在DiscoverNetworkConnector.createBridge(…)方法中組裝網橋。 此方法再次使用Factory模式來查找要使用的網橋。 可能的橋接器實現如下所示: 默認情況下,當conductorSubscriptions = true時,將使用DurableConduitBridge。 管道訂閱建立到遠程代理的單一消息流,以減少當遠程主題有多個使用者時可能發生的重復。 默認情況下,這很好用,但是如果要在所有使用者之間平衡消息的負載,則需要將管道訂閱設置為false(請參閱FuseSource Broker上FuseSource 的文檔,以了解管道訂閱的文檔)。 設置為false時,將使用DemandForwardingBridge。 組裝好網橋后,即可在NetworkConnector.configureBridge(…)方法中對其進行配置。 在橋上組裝并配置完所有組件后,便會開始。 一旦啟動,它將開始將代理程序Command對象發送到遠程代理程序以進行自我標識,建立會話并從中獲取消費者信息。 從圖中可以看到,這是在DemandForwardingBridgeSupport.startRemoteBridge()超類方法中。 如果您要調試網絡連接器中的錯誤,希望這有助于確定可能發生錯誤的位置。 參考: 在代碼內部: Christian Posta軟件博客上的JCG合作伙伴 Christian Posta提供的ActiveMQ網絡連接器 。

翻譯自: https://www.javacodegeeks.com/2012/06/activemq-network-connectors.html

總結

以上是生活随笔為你收集整理的ActiveMQ网络连接器的全部內容,希望文章能夠幫你解決所遇到的問題。

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