通過worker進行MQ消費的方案之一

場景:
上游實時發送MQ,需要應用進行消費,解析MQ數據並進行計算將最終結果發送給下游。允許秒級延時

方案設計考慮:
1 需要防頻
2 考慮消息重試
3 歷史數據查詢
4 消息體有過期時效

具體方案:
MQ採用監聽方式,先進性消息的基本驗證,redis防重驗證。
驗證成功後先落庫並進行redis保存(過期時間默認1天),其中落庫和redis進行事務控制。 -》@Transactional(rollbackFor = Exception.class)

表字段增加過期時間,以及最大重試次數,以及下次任務執行時間
分佈式任務進行掃表根據執行時間,過期時間等來查詢待執行數據,redis防重(1分鐘),執行任務。失敗設置下次執行,並延後10分鐘。
成功後保留數據到ES 並刪除mysql 數據

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