我有一个java类,它将数据写入数据库,然后为每个写入的行发送一条消息给REDIS通道。现在我只想在延迟5秒后发送REDIS消息。
现在程序执行此操作:
List<Future<T>> futures = threadPool.invokeAll(tasks, timeoutSeconds, TimeUnit.SECONDS);
每个任务对应于发布到REDIS频道。如何延迟发送所有这些任务5秒钟,如何在5秒后确定只有一个工作线程获取作业,以防主线程死亡?
我正在考虑使用ScheduledExecutorService并将该服务作为独立服务运行。当分配具有计划的作业时,它会延迟5秒钟,然后从其池中分配一个工作人员来完成工作。
我需要像Curator Framework和锁定机制这样的东西吗?
什么是好的设计? 感谢