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我
          主站蜘蛛池模板: 潢川县| 伊通| 中江县| 清新县| 卓尼县| 博罗县| 措美县| 紫阳县| 始兴县| 汝南县| 黄石市| 阿克陶县| 永春县| 赫章县| 玛沁县| 凉城县| 上虞市| 德化县| 苏尼特右旗| 湄潭县| 西乡县| 灵山县| 会泽县| 泗洪县| 柳河县| 石河子市| 富民县| 定州市| 卓资县| 麻江县| 柳河县| 长葛市| 安平县| 巴楚县| 上虞市| 武汉市| 永州市| 巩留县| 丰县| 定南县| 盐源县|