【发布时间】:2015-06-20 20:06:50
【问题描述】:
我想使用 MDB(小时)处理一些运行时间很长的任务,但是 MDB 由 JMS 支持,它有一些超时(我认为在 tomEE 中大约 10 分钟)。
更糟糕的是,工作也是持久的。
由于我无法在 MDB 上捕获超时异常(可以吗?),我正在考虑手动处理 JMS 使用者的选项。手动处理它可以通过两种方式完成:同步或异步。
我将采用异步方式回退到实现 MessageListener 的无状态 bean,然后我将无法再次处理超时。
同步地,我想,我可以处理 catch 块中的超时,但是,如何在 TomEE+ 中实现一个实例/工作者/任何东西的池,它们正在监听队列,等待作业处理? (记住,这里的超时不是等待消息出现在队列中的时间,而是执行长时间运行任务的时间)
【问题讨论】:
-
为什么不将长时间运行的进程分叉到一个单独的对象中?
-
如果有办法控制这些单独对象的池大小,那可能是一种办法。你想试试答案吗? :-)
标签: java ejb jms message-driven-bean apache-tomee