亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決redis隊列消費失敗重復消費的問題

如何解決redis隊列消費失敗重復消費的問題

一只名叫tom的貓 2018-08-18 16:26:40
我目前使用redis做消息隊列。因為執行一些比較久的任務,所以服務器重啟什么的,可能會導致隊列消費失敗。比如執行的過程如下:1、隊列彈出任務2、把任務放到一個zset里面,判斷這個zset,比如超過5分鐘還在,那么就加入隊列,重新消費。3、消費任務 4、任務消費完成,這時候從zset里面移除?,F在問題是什么呢?假設3步驟持續了10分鐘,但是zset超過5分鐘就認定這個隊列掛掉了。所以又重新放入任務。如此循環,造成了任務多次消費。你可能要問,時間設置久一點不就可以了嗎?時間太久還是太短都不行,時間太久,任務等待時間太久。而且每個任務執行的時間不確定,有的是1分鐘,有的是30秒,特殊情況15分鐘。忘記說了,分布式環境,十幾臺幾十臺服務器。我現在設想一個方案,現在問題的根源在于,這個任務到底是不是在運行中。所以我考慮從這里入手。那么如何判斷這個任務是不是還在運行中?我考慮維護一個tasklist隊列。每隔1秒鐘都提交到redis。同時,定期把5秒鐘沒有匯報的任務移除掉。任務恢復的時候,就判斷這個列表里面是不是存在這個任務。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 3012 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號