我们在spring context xml文件中定义了以下调度程序。
<!-- Item Scheduling -->
<task:scheduler id="itemScheduler" pool-size="1"/>
<task:scheduled-tasks scheduler="itemScheduler" >
<task:scheduled ref="itemQueuePoller" method="poll" fixed-delay="10000"/>
</task:scheduled-tasks>
及以下是执行的java代码
@Service("itemQueuePoller")
public class ItemQueuePoller {
private final Logger LOG = getLogger(ItemQueuePoller.class);
private ItemQueueDao itemQueueDao;
private ItemHandler itemHandler;
@Autowired
public ItemQueuePoller(@Qualifier("itemQueueDao") ItemQueueDao itemQueueDao,
@Qualifier("itemHandler") ItemHandler itemHandler) {
this.itemQueueDao= itemQueueDao;
this.itemHandler= itemHandler;
}
//scheduled via batch application context
public void poll() {
try {
List<ItemQueueEntry> entries = itemQueueDao.findNextBatch();
if (entries == null || entries.isEmpty()) return;
itemHandler.processJob(entries);
} catch (Exception e) {
LOG.error("Exception occurred while processing Queue Items due to: ", e);
throw new RuntimeException(e);
}
}
}
这种情况每天都很好,但有一天它只运行了两次然后自动停止而没有任何例外。
当我们重新启动应用程序时,它开始正常工作。
我的问题是为什么它会自动停止?