这篇文章https://blog.csdn.net/chunlon...:
给消息中间件发送消息失败,发送方并不知道是消息中间件真的没有收到消息呢?还是消息已经收到了,只是返回response的时候失败了?如果是已经收到消息了,而发送端认为没有收到,执行update db的回滚操作。则会导致A账号的钱没有扣,B账号的钱却加了。
意思是消息中间件会出现收到消息,给消费者消费了,但是生产者却收到发送失败
我好奇的是,诸如kafka,rabbitMQ,ActiveMQ会出现这种状况吗?
这篇文章https://blog.csdn.net/chunlon...:
给消息中间件发送消息失败,发送方并不知道是消息中间件真的没有收到消息呢?还是消息已经收到了,只是返回response的时候失败了?如果是已经收到消息了,而发送端认为没有收到,执行update db的回滚操作。则会导致A账号的钱没有扣,B账号的钱却加了。
意思是消息中间件会出现收到消息,给消费者消费了,但是生产者却收到发送失败
我好奇的是,诸如kafka,rabbitMQ,ActiveMQ会出现这种状况吗?
理论上不会。
你可以研究一下MQ的实现原理。
另外,你也可以自己实现MQ,或者自己实现部分逻辑。比如添加一个握手的过程,取得发送成功回执。或者添加一个确认的过程,发送成功或者失败之后,都去MQ查一下消息存在不。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
分布式事务了解一下