引入 message 表的意義?
為了保證消息百分百投遞, 在發(fā)送消息到 RabbitMQ 的同時,寫入一份消息到 message 表.
然后消費者讀取 RabbitMQ 的同時也要查詢 message 表對應(yīng)的消息.??
我有點理解不了, 在這個設(shè)計中, 直接拿到 Rabbit 貌似都可以,理解不了意義在哪里.
為了保證消息百分百投遞, 在發(fā)送消息到 RabbitMQ 的同時,寫入一份消息到 message 表.
然后消費者讀取 RabbitMQ 的同時也要查詢 message 表對應(yīng)的消息.??
我有點理解不了, 在這個設(shè)計中, 直接拿到 Rabbit 貌似都可以,理解不了意義在哪里.
2019-10-12
舉報
2020-03-26
借樓,感覺這個場景舉例不是很好,既然我消費者能直接訪問DB,并且也有個定時任務(wù)可以讀取業(yè)務(wù)數(shù)據(jù)和MSG數(shù)據(jù),那還需要RabbitMQ干嘛。我直接讓生產(chǎn)者把消息放到MSG表,消費者定時任務(wù)訪問MSG表獲取消息處理,不用擔(dān)心冪等,不用擔(dān)心消息在MQ傳遞過程總出現(xiàn)的各種問題。?
2020-01-17
如果一個消息成功產(chǎn)生了,但是因為生產(chǎn)者沒有連接到exchange或者網(wǎng)絡(luò)故障等 那么這個消息是不會保存到消息隊列中去的,消費者也就無法對這個消息進行消費了,而案例中這個message表就能解決這個問題,就算在消息隊列中沒有這條消息記錄也能在數(shù)據(jù)庫的消息表中找到,并重新進行消費
2019-10-23
消費者讀取MQ的時候為什么需要拿去message表對應(yīng)的消息?message表只是起到一個訂單發(fā)送消息狀態(tài)的記錄作用 只是記錄的作用,在拿去mq后手動確認消息簽收后 這時候才回去更新message表對應(yīng)的訂單投遞狀態(tài) 即:0(發(fā)送中)->1(發(fā)送成功),如果說中間因為網(wǎng)絡(luò)狀態(tài)等等導(dǎo)致消費者這邊沒有簽收確認這個消息,此時的訂單消息狀態(tài)還是0,這時候會有定時任務(wù)去輪詢查取所有消息狀態(tài)為0(發(fā)送中)的消息來resend。