JMS(Jboss Messaging)的一點(diǎn)使用心得(十三)拔網(wǎng)線后的重連----JMS Connection原理淺析及應(yīng)用(zhuan)
在前面的文章里,我們介紹了可以自動(dòng)重連的JmsMessageListenerContainer,自動(dòng)重連的原理就是利用了JMS Connction的ExceptionListen機(jī)制?,F(xiàn)在我們討論一下Jms Connection的簡(jiǎn)單原理及應(yīng)用。Jboss Messaging管理了兩組Connection,Server端的和Client端的;其實(shí)他們都是一個(gè)東西,因?yàn)檫B接都是相互的嘛。
Server端的Connection管理是利用 [org.jboss.jms.server.connectionfactory.ConnectionFactory]實(shí)現(xiàn)的,大家可以在[\ jboss-4.2.2.GA\server\messaging1.4SP3\deploy\jboss-messaging.sar\connection -factories-service.xml]里配置它,大家也可以通過(guò)源碼來(lái)研究。不管是Serber端還是Client端都從這個(gè)Factory里 面拿Jms Connection。
另外,對(duì)Client的Jms Connction還有一個(gè)設(shè)置,就是[org.jboss.remoting.transport.Connector]的設(shè)置,它配置在[\ jboss-4.2.2.GA\server\messaging1.4SP3\deploy\jboss-messaging.sar\remoting -bisocket-service.xml]里。
根據(jù)Jboss Messaging的默認(rèn)配置,Server端Jms Connection的每隔30秒會(huì)去Check一下所有的JMS 連接,如果發(fā)現(xiàn)連接錯(cuò)誤,則該連接就會(huì)被回收,以提供給其他的Client端使用。這樣做是為了避免出現(xiàn)大量無(wú)用連接而耗費(fèi)系統(tǒng)資源。而Client端的 連接自動(dòng)Check間隔為5分鐘,就是說(shuō)如果直到Client端和Server端的連接斷掉5分鐘后,才會(huì)觸發(fā)Client端Jms Connection的onException。
這樣就會(huì)出現(xiàn)一種可能,假如Client端和Server端的網(wǎng)線中斷時(shí)間在30秒~5分鐘之間,Server端已經(jīng)回收了該連接,而Client卻認(rèn)為這個(gè)連接仍然OK,那Client端就永遠(yuǎn)收不到Jms消息了...
我們可以通過(guò)修改設(shè)置來(lái)解決這個(gè)問(wèn)題。首先看看Server端,考慮到Server端的性能和穩(wěn)定性,我們決定不做修改。只有改Client端了。如果我 們讓Client的連接Check時(shí)間小于或者等于30秒,比如說(shuō)29秒,就可以解決這個(gè)問(wèn)題。于是我們可以做以下修改:
1. connection-factories-service.xml



























































































































































2. remoting-bisocket-service.xml
































































問(wèn)題解決。OK!
posted on 2008-09-25 17:33 找個(gè)美女做老婆 閱讀(2538) 評(píng)論(0) 編輯 收藏