Spring batch 在特殊情况下,Is JMS消息不会回滚到队列spring批处理JMSItemReader实现

Spring batch 在特殊情况下,Is JMS消息不会回滚到队列spring批处理JMSItemReader实现,spring-batch,spring-jms,Spring Batch,Spring Jms,在我的开发工作中,我必须使用Spring批处理JmsItemReader来读取来自Hornetq的消息。我正在尝试测试场景,以便在spring批处理过程中发生错误时将JMS消息回滚到队列。但这对我不起作用 例如: 显示回滚计数为1的Spring步骤执行表。但实际上我并没有将消息回滚到队列中 我在xml中使用了以下配置 <batch:job id="submitOrderJmsToWebServiceJob"> <batch:step id="submitOrderJms

在我的开发工作中,我必须使用Spring批处理JmsItemReader来读取来自Hornetq的消息。我正在尝试测试场景,以便在spring批处理过程中发生错误时将JMS消息回滚到队列。但这对我不起作用

例如: 显示回滚计数为1的Spring步骤执行表。但实际上我并没有将消息回滚到队列中

我在xml中使用了以下配置

<batch:job id="submitOrderJmsToWebServiceJob">
    <batch:step id="submitOrderJmsToLocateStep">
        <batch:tasklet transaction-manager="myTxManager">
            <batch:chunk reader="jmsMessageReader" reader-transactional-queue="true" processor="jmsMessageProcessor"
                writer="jmsMessageToWebSeviceWriter" commit-interval="1" />
        </batch:tasklet>
    </batch:step>       
</batch:job> 
  <bean id="jmsMessageReader" class="org.springframework.batch.item.jms.JmsItemReader">
    <property name="jmsTemplate" ref="orderJmsTemplate" />
</bean>
<bean id="myTxManager" class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="ConnectionFactory"/>
</bean>

我在SpringJMS模板bean中使用以下属性解决了这个问题

<property name="sessionTransacted" value="true" /> 

现在jms消息可以回滚了。 注意:我已经在tasklet标记中删除了旧的配置,如transaction manager属性,并且在chunk中是transactional queue=true