您的位置:首页 > 游戏 > 游戏 > 国外批发网站有哪些_中国摄影官方网站_长沙网站seo排名_适合女生去的培训机构

国外批发网站有哪些_中国摄影官方网站_长沙网站seo排名_适合女生去的培训机构

2025/7/27 19:16:05 来源:https://blog.csdn.net/qq_45077676/article/details/146179926  浏览:    关键词:国外批发网站有哪些_中国摄影官方网站_长沙网站seo排名_适合女生去的培训机构
国外批发网站有哪些_中国摄影官方网站_长沙网站seo排名_适合女生去的培训机构

1. RocketMQ 简介

RocketMQ 是阿里巴巴开源的一款分布式消息队列,具有高吞吐量、低延迟、可靠性等特点,广泛应用于金融、电商、物联网等领域。

  • RocketMQ 的核心特性:
    • 高可靠性:支持消息存储、重复消费、失败重试等
    • 高可用性:分布式架构,支持主从复制
    • 高性能:高吞吐量、低延迟

2. 引入依赖

首先,在 Spring Boot 项目 中引入 RocketMQ 和 Spring Cloud Alibaba 的依赖。

2.1 配置依赖

pom.xml 中添加以下依赖:

<dependencies><!-- Spring Boot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Spring Cloud Alibaba RocketMQ --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-rocketmq</artifactId></dependency><!-- Spring Cloud Alibaba --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba</artifactId></dependency>
</dependencies>

2.2 配置 RocketMQ

application.yml 中配置 RocketMQ 连接信息:

spring:cloud:alibaba:rocketmq:name-server: 127.0.0.1:9876  # RocketMQ NameServer 地址producer:group: my-producer-group   # 生产者组consumer:group: my-consumer-group   # 消费者组

3. 生产者代码实现

3.1 创建消息生产者

我们可以通过注解 @RocketMQMessageListener 来创建 RocketMQ 生产者,消息可以通过 @Value 传递或直接通过 Bean 注入。

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class RocketMQProducer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;// 发送普通消息public void sendMessage(String topic, String message) {rocketMQTemplate.convertAndSend(topic, message);}
}

3.2 发送消息

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProducerController {@Autowiredprivate RocketMQProducer rocketMQProducer;@GetMapping("/send")public String sendMessage() {String message = "Hello, RocketMQ!";rocketMQProducer.sendMessage("my-topic", message);return "Message sent: " + message;}
}

访问 http://localhost:8080/send 发送消息,RocketMQ 将开始处理消息。


4. 消费者代码实现

4.1 创建消息消费者

在消费者端,我们需要创建一个消息监听器,利用 @RocketMQMessageListener 注解监听 RocketMQ 消息。

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.stereotype.Service;@Service
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "my-consumer-group")
public class RocketMQConsumer {@org.springframework.messaging.handler.annotation.MessageMappingpublic void listen(String message) {System.out.println("Received message: " + message);}
}

4.2 消费消息

每次生产者发送的消息,消费者都会通过 listen 方法进行接收。控制台会打印出收到的消息。


5. 顺序消息

RocketMQ 支持顺序消息,可以通过设置 MessageQueueSelector 来保证消息的顺序性。

5.1 发送顺序消息

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.apache.rocketmq.spring.support.RocketMQMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class OrderProducer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;// 发送顺序消息public void sendOrderedMessage(String topic, String message, int orderId) {rocketMQTemplate.convertAndSend(topic, message, new MessageQueueSelector() {@Overridepublic MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {// 根据orderId选择队列return mqs.get(orderId % mqs.size());}}, orderId);}
}

5.2 接收顺序消息

顺序消息的消费逻辑和普通消息相似,只不过要保证顺序消息的消费顺序。


6. 事务消息

RocketMQ 提供了事务消息功能,能够保证消息在分布式事务中的可靠性。我们通过 @RocketMQTransactionListener 来实现。

6.1 配置事务消息

import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener;
import org.apache.rocketmq.spring.core.RocketMQLocalTransaction;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
@RocketMQTransactionListener
public class TransactionProducer {@Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendTransactionMessage(String topic, String message) {rocketMQTemplate.sendMessageInTransaction(topic, message, null);}public RocketMQLocalTransaction executeLocalTransaction(String message, Object arg) {// 事务操作try {// 业务操作return RocketMQLocalTransaction.SUCCESS;} catch (Exception e) {return RocketMQLocalTransaction.ROLLBACK;}}
}

6.2 事务回查

RocketMQ 支持事务回查机制,如果事务消息发送后没有明确的提交或回滚,RocketMQ 会通过回查接口查询事务状态。


7. Spring Cloud Alibaba 集成

7.1 配置 Spring Cloud RocketMQ

application.yml 配置 Spring Cloud Alibaba 与 RocketMQ 集成。

spring:cloud:alibaba:rocketmq:name-server: 127.0.0.1:9876producer:group: my-producer-groupconsumer:group: my-consumer-group

7.2 集成 OpenFeign 与 RocketMQ

通过 OpenFeign 实现远程服务调用,可以和 RocketMQ 一起工作。例如,将 RocketMQ 生产者集成到一个微服务中,使用 OpenFeign 调用。

@FeignClient("rocketmq-producer-service")
public interface RocketMQFeignClient {@PostMapping("/send")void sendMessage(@RequestBody String message);
}

通过 Feign 客户端发送请求并触发 RocketMQ 生产者的消息发送。


8. 总结

功能总结

功能说明
消息生产使用 RocketMQTemplate 发送消息
消息消费使用 @RocketMQMessageListener 监听消息
顺序消息使用 MessageQueueSelector 保证消息顺序
事务消息使用 RocketMQTransactionListener 保证事务一致性
集成 Spring Cloud结合 Spring Cloud Alibaba RocketMQ 进行分布式消息通信

集成 RocketMQ 的好处

  • 提高系统解耦,避免直接调用远程服务。
  • 支持异步、可靠的消息传递。
  • 通过顺序消息保证业务流程的顺序性。
  • 事务消息保证分布式事务的一致性。

这篇教程将帮助你实现 Spring Boot 和 Spring Cloud Alibaba 集成 RocketMQ 的基本功能,之后可以根据业务需求进行扩展。如果这篇教程对你有帮助,记得点赞、收藏哦! 🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com