从Jms消息接收创建作业

时间:2019-03-11 16:02:54

标签: jms jbatch

使用wildfly 15和仅JavaEE(不使用spring),我需要使用Jms队列中的消息,以便使用Jbatch依次为每条消息创建一个新作业,而没有作业重叠。

例如:

JMS队列:-> msgC-> msgB-> msgA

批处理

  • 收到msgC,创建JobC,运行jobC
  • 等待JobC结束,查看JMS队列,接收msgB,创建JobB,运行JobB
  • 等待JobB结束,查看JMS队列,接收msgA,创建JobA,运行JobB

有可能实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

并行或以正确的顺序处理消息是JMS客户端中的一些标准行为,您只需配置即可正确执行。这就是为什么要排队。只要确保您只有一个消息驱动的Bean在工作,就应该确保您只有一个进程并且没有并行运行。

如果将任务移交给批处理API,则将由另一组线程处理该任务,现在您需要手动确保一个作业终止,然后才能开始下一个作业。因此,您的消息驱动bean将不得不轮询并等待批处理执行。

您为什么要这样做,因为这只会使您的生活变得更加复杂? 我相信您仍然可以从批处理步骤的简单编排,重新启动功能或某些并行执行中受益,而这些必须自己在消息驱动的Bean中进行。