往事如風
          記錄工作中的點點滴滴 留住那些淡淡的回憶
          posts - 6,  comments - 3,  trackbacks - 0

          最近在線上部署的ActiveMQ發生一次故障,因為一臺ActiveMQ故障將前臺的關鍵應用全部連接掛住,根本原因有兩條:session的timeout設置不合理以及session池沒有限制大小。這里說的不是這個問題,而是在后續設置client的timeout過程中,有同學發現AMQ有一個嚴重的bug,timeout根本不起作用!!!

          調試代碼發現:

          fr.png

          在Activemq的send response處理中,使用了一個BlockingQueue,在有timeout的方法里,使用了poll方法,這個方法的api說明中指出,當timeout發生時,這個方法返回null!!!

          我們在看AMQ經過層層調用后,在ActiveMQConnection方法中如何處理這個返回值:

          amc.png

          對返回值為空的情況沒有做任何處理,即使消息發送超時,amq也認為這個消息發送成功!估計這哥們理解poll在timeout的時候會拋出異常吧。

          解決辦法很簡單,在response為空的時候,拋出JMSException,告知發生Timeout錯誤。

          posted on 2010-07-14 19:17 井底青蛙,常望天空 閱讀(183) 評論(0)  編輯  收藏 所屬分類: ActiveMQjava

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2010年7月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 涡阳县| 巴彦淖尔市| 吉木萨尔县| 荣昌县| 麻栗坡县| 平邑县| 武清区| 五原县| 临安市| 四会市| 曲松县| 蓝山县| 大英县| 沙雅县| 祁连县| 贵南县| 卓尼县| 陆良县| 惠东县| 桐柏县| 长乐市| 曲阳县| 忻州市| 仪陇县| 富锦市| 久治县| 安康市| 龙泉市| 克拉玛依市| 琼海市| 保靖县| 焉耆| 临夏县| 金平| 滨海县| 隆昌县| 柯坪县| 久治县| 安图县| 方正县| 三河市|