鍍金池/ 問答/人工智能  Java  網(wǎng)絡(luò)安全/ 消息中間件會(huì)出現(xiàn)收到消息,給消費(fèi)者消費(fèi)了,但是生產(chǎn)者卻收到發(fā)送失敗的結(jié)果嗎?

消息中間件會(huì)出現(xiàn)收到消息,給消費(fèi)者消費(fèi)了,但是生產(chǎn)者卻收到發(fā)送失敗的結(jié)果嗎?

這篇文章https://blog.csdn.net/chunlon...

給消息中間件發(fā)送消息失敗,發(fā)送方并不知道是消息中間件真的沒有收到消息呢?還是消息已經(jīng)收到了,只是返回response的時(shí)候失敗了?如果是已經(jīng)收到消息了,而發(fā)送端認(rèn)為沒有收到,執(zhí)行update db的回滾操作。則會(huì)導(dǎo)致A賬號(hào)的錢沒有扣,B賬號(hào)的錢卻加了。


意思是消息中間件會(huì)出現(xiàn)收到消息,給消費(fèi)者消費(fèi)了,但是生產(chǎn)者卻收到發(fā)送失敗
我好奇的是,諸如kafka,rabbitMQ,ActiveMQ會(huì)出現(xiàn)這種狀況嗎?

回答
編輯回答
孤島

分布式事務(wù)了解一下

2017年10月17日 05:06
編輯回答
淡墨

理論上不會(huì)。
你可以研究一下MQ的實(shí)現(xiàn)原理。
另外,你也可以自己實(shí)現(xiàn)MQ,或者自己實(shí)現(xiàn)部分邏輯。比如添加一個(gè)握手的過程,取得發(fā)送成功回執(zhí)?;蛘咛砑右粋€(gè)確認(rèn)的過程,發(fā)送成功或者失敗之后,都去MQ查一下消息存在不。

2018年6月10日 12:02