栏目分类
热点资讯
夜必撸 往时虫 音尘提前合手久化 + 定时任务
发布日期:2025-06-29 00:22 点击次数:108
其实推行的原因是无法详情是否合手久化?那咱们是不是不错我方让音尘合手久化呢?谜底是不错的夜必撸,咱们的决议再一步的演化。
上图经过:
裸舞推特(1)订单事业分娩者在送达音尘之前,先把音尘合手久化到 Redis 或 DB 中,提倡 Redis,高性能。音尘的情状为发送中。
(2)confirm 机制监听音尘是否发送生效?如 ack 生效音尘,删除 Redis 中此音尘。
(3)淌若 nack 不能功的音尘,这个不错把柄本身的业务选拔是否重发此音尘。也不错删除此音尘,由我方的业务决定。
(4)这边加了个定时任务,来拉取隔一定期间了,音尘情状照旧为发送中的,这个情状就标明,订单事业是莫得收到 ack 生效音尘。
(5)定时任务会作赔偿性的送达音尘。这个时候淌若 MQ 回调 ack 生效罗致了,再把 Redis 中此音尘删除。
这么的机制其实便是一个赔偿机制,我无论 MQ 有莫得实在的罗致到,惟有我的 Redis 中的音尘情状亦然为【发送中】,就暗示此音尘莫得正确生效送达。再运转定时任务去监控,发起赔偿送达。
虽然定时任务何处咱们还不错加上一个赔偿的次数,淌若大于 3 次,照旧莫得收到 ack 音尘,那就径直把音尘的情状缔造为【失败】,由东说念主工去排查到底是为什么?
这么的话决议就比拟完竣了,保险了 100% 的音尘不丢失(虽然不包含磁盘也坏了,不错作念主从决议)。
不外这么的决议,就会有可能发送屡次疏通的音尘,很有可能 MQ 如故收到了音尘,便是 ack 音尘回调时出现相聚故障,莫得让分娩者收到。
那就要条款消耗者一定在消耗的时候保险幂等性!夜必撸