posts - 88, comments - 3, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          用Spring JMS 的JmsTemplate從消息隊列消費消息時發現,使用了CLIENT_ACKNOWLEDGE模式,消息返回后總是自動被ack,也就是被broker "Dequeued"

              protected Message doReceive(Session session, MessageConsumer consumer) throws JMSException {
                  
          try {
                      
          // Use transaction timeout (if available).
                      long timeout = getReceiveTimeout();
                      JmsResourceHolder resourceHolder 
          =
                              (JmsResourceHolder) TransactionSynchronizationManager.getResource(getConnectionFactory());
                      
          if (resourceHolder != null && resourceHolder.hasTimeout()) {
                          timeout 
          = Math.min(timeout, resourceHolder.getTimeToLiveInMillis());
                      }
                      Message message 
          = doReceive(consumer, timeout);
                      
          if (session.getTransacted()) {
                          
          // Commit necessary - but avoid commit call within a JTA transaction.
                          if (isSessionLocallyTransacted(session)) {
                              
          // Transacted session created by this template -> commit.
                              JmsUtils.commitIfNecessary(session);
                          }
                      }
                      
          else if (isClientAcknowledge(session)) {
                          
          // Manually acknowledge message, if any.
                          if (message != null) {
                              message.acknowledge();
                          }
                      }
                      
          return message;
                  }
                  
          finally {
                      JmsUtils.closeMessageConsumer(consumer);
                  }
              }

          但是使用異步listener 就不會出現這個情況,搜了下google,發現果然存在這個問題

               https://jira.spring.io/browse/SPR-12995
               https://jira.spring.io/browse/SPR-13255
               http://louisling.iteye.com/blog/241073

          同步方式拉取消息,暫時沒找到好的封裝,只能暫時用這。或者盡量用listener, 這個問題暫時標記下,或者誰有更好的解決方案可以comment我
          主站蜘蛛池模板: 邵东县| 太保市| 和顺县| 南宫市| 龙山县| 临武县| 信阳市| 玛纳斯县| 隆德县| 宁阳县| 陈巴尔虎旗| 湘潭市| 武定县| 西乌珠穆沁旗| 和田市| 通州区| 沈丘县| 剑阁县| 宁晋县| 会泽县| 和田市| 锦屏县| 雷波县| 诏安县| 义马市| 饶阳县| 迁西县| 阳西县| 鹤壁市| 介休市| 聂荣县| 友谊县| 巍山| 台山市| 安义县| 澄迈县| 吉林市| 无棣县| 保定市| 栾城县| 靖西县|