通过worker进行MQ消费的方案之一

场景:
上游实时发送MQ,需要应用进行消费,解析MQ数据并进行计算将最终结果发送给下游。允许秒级延时

方案设计考虑:
1 需要防频
2 考虑消息重试
3 历史数据查询
4 消息体有过期时效

具体方案:
MQ采用监听方式,先进性消息的基本验证,redis防重验证。
验证成功后先落库并进行redis保存(过期时间默认1天),其中落库和redis进行事务控制。 -》@Transactional(rollbackFor = Exception.class)

表字段增加过期时间,以及最大重试次数,以及下次任务执行时间
分布式任务进行扫表根据执行时间,过期时间等来查询待执行数据,redis防重(1分钟),执行任务。失败设置下次执行,并延后10分钟。
成功后保留数据到ES 并删除mysql 数据

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章