1
Ehco1996 201 天前
看复杂度和需求
mq 其实就是外存,能保证程序 crash 之后也不丢,放线程池里就是完全相反的 |
2
kanepan19 201 天前
如果异步任务重要, 用个用建一个任务表,用状态去维护他。
无论是,线程池还是 mq 都行。 我个人觉的,不是很复杂的任务,丢线程池挺方便。 mq 拿到的任务,执行一半,重启了,还是执行失败,当然影响范围比较小。 |
3
xinshoushanglu 201 天前
如果 任务不能丢失,有可靠性需求,那么不能用线程池 否则服务一重启发布 就丢了。
反之不重要的话,如果有任务队列的 控制需求,比如控制执行到一半任务 想暂停,过段时间继续,那么还得用 MQ 控制 offset 。 如果既不在意 任务丢失,也没有中途控制需求,只需要快点跑完眼前这批任务,那直接用线程池更合适,不用引入外部依赖来增加系统复杂度 |
4
vivisidea 201 天前
很多异步任务是什么量级?几千个?几万个?几十万个?
线程池还是 mq ,我理解这两个并不是同一个角色,mq 的作用是分发任务,线程池是执行任务,或许你是想问 “是用单独的 mq 队列给 task 排队,还是用线程池内置的 blockingQueue 给 task 排队?” |