我从事的工作需要:
<int-jms:message-driven-channel-adapter channel="CHANNEL1" ... />
开始向JMS
频道发送新的CHANNEL1
消息; CHANNEL1
通道转换为JobLaunchRequest
,并执行一项工作,即将数据插入数据库以及包含原始JMS
消息有效负载的有效负载; CHANNEL2
频道; <batch-int:job-launching-gateway request-channel="CHANNEL2"/>
在频道中出现新消息时开始执行新的作业; 问题是,每次收到新的jms消息时,我都会启动一个新的数据库事务。
问题:我应该如何处理这样的流程?常见的模式是什么?
更新
我为每条消息开始工作。一条消息包含一个数据。如果我只使用spring-batch
,那么我将不得不管理某种轮询器(如果我错了,请更正我),但是我想应用一种(两种)消息驱动的方法:
10
多条消息或开始处理收到第一条消息后10
秒钟收到的所有内容。JMS
队列中包含的所有内容。当然,我希望解决方案是跨国的:消息处理的顺序无关紧要。
答案 0 :(得分:1)
BatchMessageListenerContainer
可以在您的用例中使用。它支持在单个事务中批处理消息。
请注意,该类不是主框架的一部分,它实际上是一个测试类,但是您可以根据需要使用它。
希望这会有所帮助。