0

使用wildfly 15并且仅使用JavaEE(无spring)我需要使用Jms队列中的消息,以便为每条消息按顺序使用Jbatch创建一个新作业,而不会出现作业重叠。

例如:

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

批处理

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

有可能做到这一点吗?

4

1 回答 1

0

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

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

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

于 2020-10-31T06:24:35.847 回答