RocketMQ集成Springboot --Chapter1

RocketMQ集成Springboot 三种消息发送方式

生产者

引入依赖

java 复制代码
    <!--⽗⼯程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
    </dependencies>
java 复制代码
/**
 *生产者的代码书写demo
 **/
@SpringBootTest
public class RockerMQTest {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @Test
    public void sendMsg(){

        Message msg = MessageBuilder.withPayload("发送同步消息1").build();
        rocketMQTemplate.send("helloTopicBoot",msg);
    }

    /**
     * 异步发送消息,成功或者失败之后进行回调
     */
    @Test
    public void sendASYNCMsg() throws InterruptedException {
        System.out.println("发送前");
        Message msg = MessageBuilder.withPayload("boot发送异步消息").build();
        rocketMQTemplate.asyncSend("helloTopicBoot", msg, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("消息发送状态:"+sendResult.getSendStatus());
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("消息发送失败");
            }
        });
        System.out.println("发送完毕");
        //睡五秒,不睡的话整个方法就结束了不能进行回调了
        TimeUnit.SECONDS.sleep(5);
    }

    /**
     * 一次性消息无论消息的结果是什么,通常用于日志等丢失一小部分数据无关紧要的情况下使用
     */
    @Test
    public void sendOnewayMsg(){
        Message msg = MessageBuilder.withPayload("boot发送一次性消息").build();
        rocketMQTemplate.sendOneWay("helloTopicBoot",msg);
    }
}
java 复制代码
//application.yml配置文件
rocketmq:
  name-server: 10.0.0.130:9876
  producer:
    group: my-group
消费者

引入依赖

java 复制代码
    <!--⽗⼯程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>

    </dependencies>

实现一个监听器对象,重写其中的消费消息的方法。使用注解@RocketMQMessageListener(consumerGroup = "htpConsumerGroup",topic = "helloTopicBoot")

consumerGroup组必须是唯一的,helloTopicBoot表示要监听的主题

java 复制代码
@Component
@RocketMQMessageListener(consumerGroup = "htpConsumerGroup",topic = "helloTopicBoot")
public class HelloTopicListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt messageExt) {
        System.out.println("收到的消息:"+new String(messageExt.getBody(), Charset.defaultCharset()));
    }
}

最后生产者启动测试类发送消息,消费者运行主程序一直运行即可.

相关推荐
paopaokaka_luck1 小时前
绿色环保活动平台(AI问答、WebSocket即时通讯、协同过滤算法、Echarts图形化分析)
java·网络·vue.js·spring boot·websocket·网络协议·架构
齐穗穗1 小时前
springboot集成websocket
spring boot·后端·websocket
老华带你飞2 小时前
畅阅读小程序|畅阅读系统|基于java的畅阅读系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·畅阅读系统小程序
小熊学Java3 小时前
基于 Spring Boot+Vue 的高校竞赛管理平台
vue.js·spring boot·后端
记得开心一点嘛8 小时前
手搓Springboot
java·spring boot·spring
shallwe小威12 小时前
SpringBoot集成ElasticSearch
数据库·spring boot·elasticsearch
Q_Q196328847513 小时前
python+springboot+uniapp微信小程序题库系统 在线答题 题目分类 错题本管理 学习记录查询系统
spring boot·python·django·uni-app·node.js·php
AD钙奶-lalala16 小时前
Spring Initializr(或者 IDEA 里新建 Spring Boot 项目)时 Dependencies 的选择
spring boot·spring·intellij-idea
风槐啊19 小时前
邪修实战系列(3)
java·ide·spring boot·spring·tomcat