Java 使用DMLC和Spring批处理的BatchMessageListenerContainer

Java 使用DMLC和Spring批处理的BatchMessageListenerContainer,java,spring,jms,spring-batch,Java,Spring,Jms,Spring Batch,我正在尝试设置一个DMLC,以便它在同一事务中从JMS代理(ActiveMQ)拾取一定数量的消息,并且如果发生任何错误,该事务将回滚,以便该事务中包含的所有消息最终都在DLQ中,或者更好的是,不离开代理 我在spring batch Infrastructure tests repo()下找到了一个使用spring batch的BatchMessageListenerContainer实现,但是这些测试并没有真正处理消息 理想情况下,我希望进行调整,以便消息侦听器中接收到的消息以某种方式绑定到R

我正在尝试设置一个DMLC,以便它在同一事务中从JMS代理(ActiveMQ)拾取一定数量的消息,并且如果发生任何错误,该事务将回滚,以便该事务中包含的所有消息最终都在DLQ中,或者更好的是,不离开代理

我在spring batch Infrastructure tests repo()下找到了一个使用spring batch的BatchMessageListenerContainer实现,但是这些测试并没有真正处理消息


理想情况下,我希望进行调整,以便消息侦听器中接收到的消息以某种方式绑定到RepeatContext,这样repeatOperations执行的操作也可以对消息执行,但问题是当前正在拦截的方法,
receiveAndExecute
返回一个布尔值,该布尔值实际上被传递到RepeatContext,并且在
RepeatOperations
类中可用。我有点不确定整个Repeat****类包是如何工作的,那么有没有简单的方法来实现这样的功能?

在Spring Batch中,您对
RepeatOperations
做了什么?大多数用例不需要直接与它交互……除了一个小的改变之外,除了使用原始代码之外,我根本不做什么。这正是我的意思,一旦RepeatOperations类说上下文和策略都完成了,应该如何处理某些处理的触发?你应该注册一个听众吗?即使是这样,我仍然不确定如何保存和处理该事务中包含的所有收集的消息。您能提供一个配置示例吗?示例就在上面的链接中。spring设置可以在中找到,但在我的情况下,我不是在向数据库写入数据,而是在完成策略后收集JMS消息来处理它们。实际上,我不确定上面的示例是如何工作的,因为如果事务失败,他将回滚数据库写入,但是所有消息都已被确认,因此它们将丢失。在我的示例中,我使用的是JMS事务,以便在发生错误时将消息留在代理中。接下来的问题是如何在事务中存储每个传入消息(仅在消息侦听器中可用),并在策略完成后处理它们,同时避免在处理前一个事务时获取属于不同事务的消息。