2個不同的MDB監(jiān)聽JBoss 4.2.3 上的同一個Topic (集成JBoss Messaging 1.4.2 SP1),Topic上的消息是BytesMessage。發(fā)一個消息到Topic上,2個MDB都會收到這個消息。

          但奇怪的是只有一個MDB能正常讀取BytesMesage,另一個MDB讀取BytesMessage.readBytes()始終返回-1

          同樣的測試程序,在WebLogic上就正常。

          JBoss怎么會發(fā)送同一個BytesMessage對象到所有的subscriber?有人解決過同樣的問題嗎?


          google了很長時間,也嘗試了很多方法,似乎沒什么好的辦法。一種方法是避免使用BytesMessage, 還有一種方法就是使用反射,直接復制JBoss的BytesMessage實現(xiàn)。

          public void onMessage(Message msg) {

            BytesMessageProxy msgProxy 
          = (BytesMessageProxy)msg;
                  
                  Class clazz 
          = MessageProxy.class;
                  Field field 
          = clazz.getDeclaredField("message");
                  field.setAccessible(
          true);
                  JBossMessage rawMsg 
          = (JBossMessage)field.get(msgProxy);
                  
                  BytesMessage newMsg 
          = (BytesMessage)rawMsg.doCopy();

                 
          // read data from newMsg
          }

          posts - 5, comments - 25, trackbacks - 0, articles - 1

          Copyright © 天快黑了

          主站蜘蛛池模板: 丽水市| 濮阳市| 麟游县| 大新县| 罗江县| 肥东县| 黄陵县| 张家川| 盐山县| 苍梧县| 吉首市| 宕昌县| 西城区| 亳州市| 嵊泗县| 偏关县| 华池县| 水富县| 聊城市| 万安县| 苍南县| 哈密市| 桂东县| 云浮市| 沿河| 德安县| 敦煌市| 闽清县| 志丹县| 九江县| 昂仁县| 恩平市| 和政县| 溧阳市| 玉林市| 桑植县| 宕昌县| 呼图壁县| 甘肃省| 博客| 新疆|