訊息佇列任務丟失的原因

2021-08-30 02:46:09 字數 424 閱讀 8680

有時:乙個非同步處理的操作正常的放到了非同步佇列裡,但是並沒有被處理,或者資料庫用改動,但是消費的binlog日誌並沒有改動資訊,造成這種的原因是什麼?對此進行一定猜測,訊息佇列是不安全的,會丟失任務(如kafka)?

相比之下,寫定時任務,去資料庫裡掃表,拿出處理中的訂單,去挨個輪詢狀態。這樣比較準確,但是對效能有損耗,對資料庫造成額外壓力,並且非實時。

任務丟失的一些猜想:

reids 的list可以作為訊息佇列來使用。當消費者從list中取出訊息時redis就已經將訊息刪除,此時如果消費者消費失敗,或者因為異常、不可抗拒因素(宕機等)時,可能會導致訊息丟失的情況。

但是也可以使用rpoplpush這些命令去彌補,當消費完成後再去進行刪除,保證訊息的可靠性。

當然有很多佇列都是有可靠消費的保證,當你消費完成後,再次向佇列傳送完成的確認,佇列才會刪除訊息。

訊息佇列如何保證訊息不丟失

檢測訊息丟失 布式鏈路追蹤系統 如果是 it 基礎設施比較完善的公司,一般都有分布式鏈路追蹤系統,使用類似的追蹤系統可以很方便地追蹤每一條訊息。利用訊息佇列的有序性來驗證 producer端,我們給每個發出的訊息附加乙個連續遞增的序號,然後在consumer端來檢查這個序號的連續性,連續則沒有丟失,...

django celery 任務訊息佇列

描述 為提高 效能,很多耗時,但不影響頁面正常的操作,可丟給訊息佇列非同步執行 比如sns 的 新鮮事兒 系統,我發帖之後,會給所有關注我的人推送一條通知。乍一看沒什麼難的,發帖之後找出關注我的人,然後生成相應的訊息記錄就行了。但問題是,100個人關注我,就要執行100條insert查詢,更要命的是...

ELK redis訊息佇列,防止資料丟失

準備工作 這裡我準備了3臺虛擬機器 ip 部署的服務 192.168 131 80 elasticsearch,kibana 192.168 131 81 logstash,redis 192.168 131 82 logstash 工作流程 1 82的logstash 獲取日誌資訊傳送到 81 的...