db-mq 分布式事务的疑惑
来源:6-8 分布式事务实现模式与技术

木星鸽_手机
2018-08-26
课中的例子使用的是activemq,利用spring完成与b数据源的事务同步;
但假如用rabbitmq,或者kafka等非jms协议的mq,要如何实现分布式事务呢
写回答
1回答
-
这个需要考虑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的消息收发的过程当中。
00
相似问题