0. 入门篇
Springboot 集成 RocketMq(入门)-CSDN博客
本文主要使用RocketMQTemplate完成生成消息。
1. 异步消息
1.1 生产者
@Resource
private RocketMQTemplate rocketMqTemplate;
@GetMapping("/send/async/{messageBody}")
public String sendAsyncMsg(@PathVariable("messageBody") String messageBody) {
rocketMqTemplate.asyncSend("async", messageBody, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
log.info("sendAsyncMsg success messageBody:{}", messageBody);
}
@Override
public void onException(Throwable throwable) {
log.error("sendAsyncMsg fail messageBody:{}", messageBody);
}
});
log.info("sendAsyncMsg operate oK");
return "OK";
}
1.2 消费者
@Component
@RocketMQMessageListener(topic = "async", consumerGroup = "async")
@Slf4j
public class MyAsyncConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
// 处理消息的逻辑
log.info("Received async message: {}", message);
}
}
通过日志可以发现,主线程结束线程日志先于异步日志打印完成。
2.广播消息
2.1 生产者
@Resource
private RocketMQTemplate rocketMqTemplate;
@GetMapping("/send/broadcast/{messageBody}")
public String sendBroadcastMsg(@PathVariable("messageBody") String messageBody) {
// 单向不可靠消息 void 方法无返回值
SendResult sendResult = rocketMqTemplate.syncSend("broadcast", messageBody);
log.info("sendBroadcastMsg msgId:{},sendStatus:{}", sendResult.getMsgId(), sendResult.getSendStatus());
return "OK";
}
2.2 消费者
消费者监听注解上设置 messageModel = MessageModel.BROADCASTING,默认是(MessageModel.CLUSTERING)。
@Component
@RocketMQMessageListener(topic = "broadcast", consumerGroup = "broadcast1", messageModel = MessageModel.BROADCASTING )
@Slf4j
public class MyBroadcast1Consumer implements RocketMQListener<String> {
@Override
public void onMes