如何使用消息队列解决分布式事务?
有两个选择。
方案1本地消息事务表
生产者需要添加一个事务消息表,具体步骤可以通过这种实现:。
1.生产者执行业务逻辑,并在消息表中插入一个事务记录。这两个操作在一个本地事务中。
2.启动一个后台线程定期轮询消息表,并将消息发送到消息队列。
3.删除消息表中的记录,直到传输成功。
第二种方案需要消息队列的支持,业务方提供查询接口。
1.生产者将准备好的消息发送到消息队列。
2.本地事务中的业务逻辑
3.根据执行结果确认或取消准备好的消息。
4.消息队列会保证预发布的消息会被确认或取消,消息队列会不断向生产者索取执行结果,这就需要生产者提供类似的回调函数。
方案2相当于方案1中的消息队列代替消息表和后台线程轮询功能,但并不是所有的消息队列都支持该功能。支持Rock
消息队列原理?
消息队列主要解决应用耦合、异步消息和流量裁剪问题。实现高性能、高可用性、可扩展和最终一致的架构。广泛使用的消息队列有Kafka、ActiveMQ、RabbitMQ、ZeroMQ、metaMQ和RocketMQ。
消息队列在实际应用中常见的使用场景是异步处理、应用解耦、流量裁剪和消息通信。