热门
最新
红包
立Flag
投票
同城
我的
发布
CSDN App 扫码分享
评论
1
打赏
- 复制链接
- 举报
下一条:
每日小tip(二)问题: 对于mq消息的可靠投递,互联网公司的真实落地方案是怎样的.思路: mq消息的可靠性,主要分为3个方面 (1)生产者的可靠投递(难点) (2)集群的持久化 (3)消费者的消费确认解决方案(对于难点):结合事务 (1)代码实现:将发送mq的代码放在事务的最后一句 原理: 数据执行出现异常,事务自动回滚,所以不会发送mq; mq出现异常,事务回滚,从而数据不会出现异常 缺点: 如果需要发送多条mq,即不同情况对应不同的mq,那就不能用上述 方案了 (2)消息入库,并且事务提交后再发送消息. 原理:a.将消息存入数据库中,并将对应的ID放入threadlocal中 b.事务提交后,查询threadlocal中待发送消息ID,将消息发送,并删除 c.如果消息发送失败,通过定时任务再次发送,达到最终一致性.注意:方案二中,需要对事务管理器的重写思考: (1)threadlocal很眼熟,有什么用,原理是什么 (2)为什么不使用mq提供的事务消息参考:https://github.com/eetig/rocketmq-example
