生产者
导入依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
注入
@Resource
private RocketMQTemplate mqTemplate;
发送消息
private void sengMessageToMQ(CourseDocumentDTO2 documentDto) {
String str= JSON.toJSONString(documentDto);
mqTemplate.asyncSend("course-topic:online-tags",
//course-topic 主题
//online-tags 二级标签
MessageBuilder.withPayload(str).build(),
new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
log.info("消息发送成功");
}
@Override
public void onException(Throwable throwable) {
throwable.printStackTrace();
log.info("消息发送失败"+str);
}
});
}
消费者
导入依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
类注解
@RocketMQMessageListener(consumerGroup = "consumer-course-group",
topic = "course-topic", //主题
selectorExpression = "*", // 二级标签
messageModel = MessageModel.BROADCASTING) // 集群模式
@Component //交给spring
消费消息
public class CourseMQListener implements RocketMQListener<MessageExt> {
@Override
public void onMessage(MessageExt messageExt) {
try {
String msg = new String(messageExt.getBody(), "utf-8");
CourseDocumentDTO2 courseDocumentDTO = JSON.parseObject(msg, CourseDocumentDTO2.class);
String smsAge = String.format(message, courseDocumentDTO.getId(),
courseDocumentDTO.getName());
//在此定义消费具体实现
log.info("消费消息");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
配置application.yml
rocketmq:
name-server: 127.0.0.1:9876
#生产者配置
producer:
#生产者组名字
group: "course-producer"
# 消息最大长度 默认 1024 * 4 (4M)
max-message-size: 4096
# 发送消息超时时间,默认 3000
send-message-timeout: 3000
# 发送消息失败重试次数,默认2
retry-times-when-send-failed: 2
retry-times-when-send-async-failed: 2
各位伙伴有啥问题记得留言哦