1. RocketMQTemplate入门指南
RocketMQTemplate是Spring生态为RocketMQ提供的消息发送模板工具,它封装了原生客户端的复杂操作,让消息发送变得像调用普通方法一样简单。我第一次接触这个工具是在一个电商项目中,当时需要实现订单创建后的异步通知功能,RocketMQTemplate的简洁API让我印象深刻。
1.1 环境搭建实战
在开始之前,我们需要完成基础环境配置。这里我推荐使用Spring Boot 2.7.x版本,它与RocketMQ的兼容性最好。Maven依赖配置如下:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.3</version>
</dependency>
配置文件application.yml的典型配置示例:
rocketmq:
name-server: 127.0.0.1:9876
producer:
group: my-producer-group
send-message-timeout: 3000
retry-times-when-send-failed: 2
这里有个实际项目中的经验:当生产环境有多个NameServer时,建议用分号分隔地址,比如192.168.1.100:9876;192.168.1.101:9876。我曾经遇到过单NameServer节点故障导致消息发送失败的情况,多节点配置可以提高可用性。
1.2 基础消息发送三剑客
RocketMQTemplate提供了三种基础发送模式,我习惯称它们为"消息三剑客":
- 同步发送:最常用的方式,发送后会等待Broker返回结果
public SendResult sendOrderNotification(Order order) {
return rocketMQTemplate.syncSend("order-topic", order);
}
- 异步发送:适合对实时性要求不高的场景
public void asyncSendLog(String logContent) {
rocketMQTemplate.asyncSend("log-topic", logContent, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
log.info("日志发送成功:{}", sendResult.getMsgId());
}
@Override
public void onException(Throwable e) {
log.error("日志发送失败", e);
}
});
}
- 单向发送:适用于不关心发送结果的场景,比如日志收集
public void sendLoginTrace(User user) {
rocketMQTemplate.sendOneWay("logi


1203

被折叠的 条评论
为什么被折叠?



