db-mq 分布式事务的疑惑

来源:6-8 分布式事务实现模式与技术

木星鸽_手机

2018-08-26

课中的例子使用的是activemq,利用spring完成与b数据源的事务同步;
但假如用rabbitmq,或者kafka等非jms协议的mq,要如何实现分布式事务呢

写回答

1回答

大漠风

2018-08-26

这个需要考虑2个方面,一个是这些MQ服务器的事务性,一个是spring事务机制对这些MQ服务器的支持(这一般都是通过JMS、AMQP等规范来支持)。

现在的MQ服务器,基本上都通过某种方式实现事务性,比如rabbitMQ通过ack/confirm实现事务,kafka也实现了“Exactly Once”的事务性,也就说保证单个的读写操作的原子性。

像RabbitMQ这样支持AMQP规范的,我们可以使用Spring AMQP来实现Spring事务管理。对于Kafka,spring也提供了 spring-kafka库,它也提供了'KafkaTransactionManager'来实现通过spring事务机制进行收发消息的事务性管理。简单来说也是通过同步事务的方式将spring的事务同步到kafka的消息收发的过程当中。

0
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程