RocketMQ简单学习和使用
RocketMQ发送消息的三种方式:
同步发送(sync)
在消息完全发送完成之后才返回结果,此方式存在需要同步等待发送结果的时间代价。具有内部重试机制,即在主动声明本次消息发送失败之前,内部实现将重试一定次数,默认为2次。
rocketMQTemplate.syncSend("topic-name", "send sync message !");
异步发送(async)
消息发送后立刻返回,当消息完全完成发送后,会调用回调函数sendCallback来告知发送者本次发送是成功或者失败。异步模式通常用于响应时间敏感业务场景,即承受不了同步发送消息时等待返回的耗时代价。和同步发送一样具有内部重试机制。
rocketMQTemplate.asyncSend("topic-name", "send async message!", new SendCallback();
直接发送 (one-way)
发送端发送完消息后会立即返回,不会等待来自broker的ack来告知本次消息发送是否完全完成发送。吞吐量很大,存在消息丢失的风险,所以其适用于不重要的消息发送,比如日志收集。
rocketMQTemplate.sendOneWay("topic-name", "message");
RocketMQ使用:
发送消息代码:
@Service
public class RocketMqService {
@Resource
private RocketMQTemplate rocketMQTemplate;
// 指定topic的同时,设置tag值,以便消费端可以根据tag值进行选择性消费
SubscribeMessage msg = new SubscriberMessage();
rocketMQTemplate.syncSend(msg.getTopic()+ ":" +msg.getTags(), msg);
}
监听消息代码:
@Service
@RocketMQMessageListener(topic = "${rocketmq.topic}",
consumerGroup = "${rocketmq.group}", selectorExpression="${rocketmq. selectorExpression}")
public class CcuMessageListener implements RocketMQListener<CcuMessage> {
@Override
public void onMessage(CcuMessage message) {
String msgBody = new String(message.getBody());
}
}
RocketMQMessageListener注解默认selectorExpression为*,表示接收当前Topic下的所有数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!