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