JBoss 7.1中的多线程预定作业

时间:2013-11-27 08:10:27

标签: multithreading jboss7.x ejb-3.0 job-scheduling

我以前使用JBoss 5中的 org.jboss.varia.scheduler.Scheduler 安排了JMX调度的定期批处理作业。这个支持在JBoss 7.1中删除了。

我找到的唯一替代方案是EJB的@schedule注释。但是,不允许在EJB内运行的作业启动线程。必须在多个并行线程中运行此批处理导入作业,以便更有效地使用硬件资源,从而节省数小时的处理时间。

如何在JBoss 7.1中安排可以从多个线程并行调用EJB的作业?

1 个答案:

答案 0 :(得分:2)

传统上需要并行执行的方法是使用MDB。 (传统上我记得异步调用,但我认为这是一个新的EJB 3.1特性,因此不适用于JBoss 7.1。)

设置概要如下:

  1. 触发批处理的@Schedule'EJB。
  2. 一个队列。
  3. 侦听此队列的MDB。应该将MDB配置为运行与旧作业中一样多的实例(有效线程)。
  4. 将插入队列并表示要由MDB执行的作业的消息对象。
  5. 当触发@Schedule'EJB时,它会将适当数量的作业消息推送到队列中。这些将通过容器与MDB实例并行传递和执行。

    作为一种(可能无关紧要的)奖励,代码变得标准,并且不依赖于特定的应用服务器API。