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

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

          調(diào)試代碼發(fā)現(xiàn):

          fr.png

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

          我們在看AMQ經(jīng)過層層調(diào)用后,在ActiveMQConnection方法中如何處理這個返回值:

          amc.png

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

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

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

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


          網(wǎng)站導航:
           

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

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 堆龙德庆县| 巫山县| 长宁县| 中方县| 思茅市| 岑巩县| 顺昌县| 佛坪县| 庆阳市| 绍兴市| 陆丰市| 达孜县| 石景山区| 江永县| 文登市| 南涧| 建宁县| 维西| 彰武县| 肥西县| 甘南县| 清河县| 洛川县| 潍坊市| 罗山县| 天峨县| 大悟县| 长宁区| 天水市| 永州市| 新疆| 镇安县| 绍兴县| 汝城县| 大兴区| 东平县| 怀集县| 林周县| 金平| 基隆市| 梨树县|