14 条回复  ·  1593 次点击
TimG 楼主 小成 2025-9-12 18:20:42
@loading 感谢回复。扫表肯定是要扫表的,有消息队列也要扫吧,并且传统服务行业,雇员数和类型...确实出乎意料的多
seth19960929 初学 2025-9-12 19:26:50
队列和定时任务 你这个需求很明显用定时任务来执行更合适,周报月报这种有很强的定时性 你可以说生成 pdf 慢,放到队列,但是就目前你这个需求定时任务 至于失败这种和队列无关,是你的业务相关,你自己加一个字段标记发没发,没发的定时任务扫描出来
TimG 楼主 小成 2025-9-12 20:50:04
@seth19960929 谢谢大佬,您说的我读了很多遍,现在感觉有点开窍了。我把消息队列按照字面意义理解了,认为跟弹夹一样,我提前把不同雇员的“调用钉钉发送任务”压进队列,让他自顾自的清理队列就行,至于失败重发、日志功能等等则借助消息队列自身的功能独立完成,我只管写程序压队列。听了您的解释,消息队列似乎是用来处理耗时操作的,像是高级模块化的线程调度器?它确实应该是工作在更底层的位置,而不是一个简单的 API 调度器。 失败重发我确实没想到要自己实现。看来无论如何也得自己实现一个简单队列,这个省不了了。
TimG 楼主 小成 2025-9-12 20:59:51
@seth19960929 确实查表填入 PDF 才是更耗时和容易出问题的操作,恍然大悟了!前面都在乱说什么真丢死人了哈哈哈,感谢感谢。
seth19960929 初学 2025-9-12 21:02:39
@TimG 你可以这么认为,队列就是可靠的异步线程,线程程序可能奔溃执行不到,但是队列不会 至于你说的自己实现,我和你说原理,你自己看看 失败重试,这些都是队列自带,但是这个更底层,比如你的发消息给钉钉要 2s ,但是执行到 1.5s 的时候进城奔溃了,当你重启服务的时候,队列系统还能让你重新执行这个任务,这是队列系统本身要实现的可靠性, 至于你说的发送没发送那是业务型的,你的表 send_status. send_month 这时候定时任务是 send_status!=1.send_month!=当前月份 查出来,扔到队列或者后台执行都行,然后执行完一个就把这条记录的这两个字段标记好,放定时任务再次扫描的时候就跳过这个任务了
12
返回顶部