需求:收到銀行異步通知,要在2秒內將結果返回銀行,同時還要根據銀行返回的交易狀態更新數據庫訂單狀態和其他業務。 采用disruptor,其實最好使用獨立MQ產品。本次用的是disruptor,遇到了一些問題,本文說下disruptor的問題排查。 問題1、消費者不在接收隊列消息 ...
背景 學生考試上交的場景,我們先將學生數據持久化存儲到mongodb中,就告知學生上交成功。然后通過disruptor消息隊列去處理后續業務邏輯。這里的上交場景會存在高並發的情況。 選型disruptor框架的原因是 其強大的單機消息處理能力,我們線上嘗試使用。如果消息處理失敗,則有相應的補償措施。 上線之初,對該框架研究不深,已經隱約感覺會有bug在路上。。。 線上問題 消息丟失 學生反饋作業上 ...
2021-04-21 10:39 0 341 推薦指數:
需求:收到銀行異步通知,要在2秒內將結果返回銀行,同時還要根據銀行返回的交易狀態更新數據庫訂單狀態和其他業務。 采用disruptor,其實最好使用獨立MQ產品。本次用的是disruptor,遇到了一些問題,本文說下disruptor的問題排查。 問題1、消費者不在接收隊列消息 ...
丟失消息的三種情況:生產者弄丟了數據、RabbitMQ 弄丟了數據、消費端弄丟了數據。 一、生產者弄丟了數據 生產者將數據發送到 RabbitMQ 的時候,可能數據就在半路給搞丟了,因為網絡問題啥的,都有可能。 方法一: 此時可以選擇用 RabbitMQ 提供的事務功能 ...
一、RabbitMQ 1)生產者弄丟了數據 生產者將數據發送到rabbitmq的時候,可能因為網絡問題導致數據就在半路給搞丟了。 1.可以選擇用rabbitmq提供的事務功能,在生產者發送數據之前開啟rabbitmq事務(channel.txSelect),然后發送消息,如果消息 ...
消息堆積 為什么會產生消息堆積? 大多數是因為Consumer 出問題了,沒有及時發現,或者故障恢復需要較長時間,導致大量消息積壓在消息隊列中。 消息隊列堆積會造成什么后果? 消息被丟棄 磁盤滿了 海量消息需要處理 解決方案: 增加消費者 ...
一、RabbitMQ 1)生產者弄丟了數據 生產者將數據發送到rabbitmq的時候,可能因為網絡問題導致數據就在半路給搞丟了。 1.可以選擇用rabbitmq提供的事務功能,在生產者發送數據之前開啟rabbitmq事務(channel.txSelect),然后發送 ...
消息隊列 - 關於消息隊列的消息丟失問題的一點思考 使用消息中間件必須面對的兩大問題 - 消息丟失 和 消息重復。 消息丟失的解決辦法主要是通過消息重發的補償手段,消息重發后導致消息重復,消息重復需要使用冪等解決。 消息從生產到消費,一般需要 ...
1. 背景 最近用戶反饋提交的SQL查詢一直處於長時間等待狀態,經過排查觀察,發現部分查詢請求丟失,導致用戶提交的查詢未被正常接收,繼而長時間無響應。 現象:集市SQL控制台提交10個簡單SQL查詢 -> 消息發送方:發送10條消息至消息隊列 -> 消息消費方:只消費了7條消息 ...
收到某業務組的小伙伴發來的反饋,具體問題如下: 項目中某 kafka 消息組消費特別慢,有時候在 kafka-manager 控制台看到有些消費者已被踢出消費組。 從服務端日志看到如下信息: 該消費組在短時間內重平衡了 600 多次。 從 cat 查看得知,每條消息處理都會有 4 次數 ...