简介: 【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息 本文将主要介绍在SpringBoot项目中如何集成RocketMQ以实现普通消息和事务消息的。 首先是分别创建生产者的springboot项目 springboot-rocketmq-producer,创建消费者的springboot项目 springboot-rocketmq-consumer。 1. 引入依赖 本例中使用的...
RocketMQ采用两阶段提交的方式实现事务消息。 1.1 RocketMQ事务消息的原理 半事务消息发送:生产者将半事务消息发送至RocketMQ服务端。 消息持久化及返回Ack确认:RocketMQ服务端接收到半事务消息并持久化成功后,向生产者返回Ack确认消息已经发送成功。此时消息状态为半事务消息。 执行本地事务逻辑:根据发送结果执行本地事...
配置RocketMQ:在application.properties或application.yml中配置RocketMQ的相关属性,如name server地址、producer group等。 properties rocketmq.name-server=localhost:9876 rocketmq.producer.group=my-producer-group 实现事务监听器:创建一个类实现TransactionListener接口,用于处理本地事务和向RocketMQ发送提交或回滚请求。
如果本地事务成功,生产者会通知 RocketMQ 提交消息,RocketMQ 将半消息转换为正常消息,并发送给消费者。 如果本地事务失败,生产者会通知 RocketMQ回滚消息,RocketMQ 会删除该半消息。 事务状态回查:如果 RocketMQ 没有收到生产者的事务状态确认,RocketMQ 会通过回查机制询问生产者事务的最终状态,确保消息的一致性。
RocketMQ 提供了多种场景所需的消息类型,包括普通消息、顺序消息、事务消息,本文分别针对这些消息类型予以展开介绍。 一、普通消息 普通消息分为三种发送方式:可靠同步发送、可靠异步发送、单向发送。 简言之,可靠同步发送就是消息发送方直到收到MQ的发送结果才发送下一条消息;可靠异步发送就是消息接收方暂时不关心发送...
TransactionStatus.CommitTransaction:提交事务消息,消费者可以消费此消息,TransactionStatus.RollbackTransaction:回滚事务,它代表该消息将被删除,不允许被消费。 环境:springboot2.4.12 + RocketMQ4.8.0 依赖 复制 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact...
首先我们用原生代码来实现一下事务消息,下面是事务消息生产者TransactionProducer类的代码,具体代码解释已经用注释标明。 package com.huc.rocketmq.transaction; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.client.producer.TransactionListener; ...
首先我们用原生代码来实现一下事务消息,下面是事务消息生产者TransactionProducer类的代码,具体代码解释已经用注释标明。 packagecom.huc.rocketmq.transaction;importorg.apache.rocketmq.client.exception.MQClientException;importorg.apache.rocketmq.client.producer.TransactionListener;importorg.apache.rocketmq.client.produc...
一、事务消息的实现步骤 事务消息发送步骤: 发送方将半事务消息发送至RocketMQ服务端。 RocketMQ服务端将消息持久化之后,向发送方返回Ack确认消息已经发送成功。由于消息为半事务消息,在未收到生产者对该消息的二次确认前,此消息被标记成“暂不能投递”状态。
环境jdk: 8u22rocketmq: rocketmq-all-4.5.2-bin-releasespringboot: 2.1.6.RELEASErocketmq-springboot: 2.0.3 发送流程(事务消息) Rocket发送事务消息: R