【发布时间】:2010-09-23 21:44:57
【问题描述】:
我有一个单线程消息侦听器,用于侦听传入的消息。收到的消息在接收时保存在数据库中。
有一条消息 A 和关联的消息 B 跟在它后面,并带有一个引用 it。在一些奇怪的情况下,B 在 A 之前到达。现在在这种情况下,必须在一些 'x' 相等的时间间隔后重试 3 次,以查看 A 是否已到达,然后保持关联。
由于消息监听器是单线程的,如果我们让线程休眠,整个系统都会受到影响。所以必须有一个单独的线程重试。
我们可以为此目的使用 Quartz Job Scheduler 来避免处理多线程问题并通过以下 2 种方式中的任何一种方式进行 PERSISTENT STORE,
- 在 Quartz 中安排一个 Job 3 次,并跟踪 JobDataMap 中的一个标志,以检查之前的重试是否成功,然后不做任何事情就返回
或
2.安排一个作业重试一次,如果重试失败,几秒钟后安排同一个作业。
石英能否仅用于重复性工作,并且没有跨工作的一些状态信息,或者有没有其他更好的方法来做到这一点。
【问题讨论】:
标签: java jakarta-ee jobs quartz-scheduler