jms - 从 Jms 消息接收创建作业
问题描述
使用wildfly 15并且仅使用JavaEE(无spring)我需要使用Jms队列中的消息,以便为每条消息按顺序使用Jbatch创建一个新作业,而不会出现作业重叠。
例如:
JMS 队列:--> msgC --> msgB --> msgA
批处理:
- 收到 msgC,创建 JobC,运行 jobC
- 等待 JobC 结束,观察 JMS 队列,接收 msgB,创建 JobB,运行 JobB
- 等待 JobB 结束,观察 JMS 队列,接收 msgA,创建 JobA,运行 JobB
有可能做到这一点吗?
解决方案
并行或正确顺序处理消息是 JMS 客户端中的一些标准行为,您可以简单地配置以正确处理。这就是为什么你有一个队列。只需确保您只有一个消息驱动 bean 在其上工作,这应该确保您有一个进程并且没有并行运行。
如果您将任务移交给批处理 API,一组不同的线程将处理它,现在您需要手动确保一个作业在下一个作业开始之前终止。因此,您的消息驱动 bean 将不得不轮询并等待批处理执行。
你为什么要这样做,因为它只会让你的生活更加复杂?我相信您仍然可以从批处理步骤的简单编排、重新启动功能或一些您必须自己在消息驱动 bean 中涵盖的并行执行中受益。
推荐阅读
- r - 合并从文件名添加日期信息的数据框
- html - 消除
...
带有 shell 命令的块 - javascript - 新的向多下拉菜单添加新选项不会出现
- javascript - 如何从我的网页中高精度打印文本?
- c# - OpenGL某些VertexBuffers不渲染
- haskell - 如何将 (Integer, Int, Int ) 转换为 Day。无法将预期类型 'Day' 与实际类型 '(Integer, Int, Int)' 匹配
- google-app-engine - 使用 appengineRun 运行 Spring Boot webapp
- r - plot.window(...) 中的错误:需要有限的“xlim”值
- android - Android System Webview 上次更新后代理设置停止工作
- javascript - 滑块未显示所有图像