如题,在队列中由一些任务,但是可能遇到一些状况,可能意料中的,可能意料外的,怎么保证异常停止时候,队列中的任务不丢失?
1
julyclyde 2016-11-18 23:32:48 +08:00
那你用外部的队列呗
redis 或者 rabbitMQ 都是可以存盘的 |
2
ihuotui 2016-11-18 23:43:16 +08:00 via Android
思考数据库如何实现
|
3
ihuotui 2016-11-18 23:48:04 +08:00 via Android
像 java 的优雅关闭
|
4
reus 2016-11-19 00:00:31 +08:00
用外部数据库事务。
|
5
billlee 2016-11-19 00:34:20 +08:00
持久化到磁盘上
|
6
darrenfang 2016-11-19 08:12:59 +08:00 via iPhone
让队列提供这样的功能吧
|
7
yidinghe 2016-11-19 08:38:21 +08:00 via Android
出现异常时,再将任务丢回到队列?
|
8
lecher 2016-11-19 09:12:53 +08:00 via Android
用外部持久化方案,比如取任务时,将任务相关数据持久化并标识处理中,当超时未更新处理状态则认为此任务出现异常,重新回滚到任务队列。
也可以增加重试次数,任务超过限制次数仍然超时无法处理完,才确认为失败任务。 不想写也可以用类似参考阿里云的消息队列模型,取出来的消息有处理时间限制,会存放在处理中的队列,完成消息需要发送任务成功的标识,通知消息系统主动删除消息数据。 如果消息超时没有收到处理成功的请求,消息系统会主动回滚此消息到等待队列中。 |
9
ansheng 2016-11-19 09:33:53 +08:00
rabbitMQ 吧,只有任务执行完毕才会删除任务,不然不会删除。
|