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()));
    }
}

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

相关推荐
数字化顾问16 小时前
基于Spring Boot + Vue 3的乡村振兴综合服务平台架构设计与实现
vue.js·spring boot·后端
尘下吹霜16 小时前
【鉴权架构】SpringBoot + Sa-Token + MyBatis + MySQL + Redis 实现用户鉴权、角色管理、权限管理
spring boot·mysql·mybatis
wxin_VXbishe17 小时前
基于SpringBoot的天天商城管理系统的设计与现-计算机毕业设计源码79506
java·c++·spring boot·python·spring·django·php
.格子衫.1 天前
Spring Boot 原理篇
java·spring boot·后端
多云几多1 天前
Yudao单体项目 springboot Admin安全验证开启
java·spring boot·spring·springbootadmin
摇滚侠1 天前
Spring Boot 3零基础教程,Spring Intializer,笔记05
spring boot·笔记·spring
Jabes.yang1 天前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂
摇滚侠1 天前
Spring Boot 3零基础教程,Demo小结,笔记04
java·spring boot·笔记
Lucky GGBond1 天前
Vue + Spring Boot 实现 Excel 导出实例
vue.js·spring boot·excel
seven97_top1 天前
Springboot 常见面试题汇总
java·spring boot·后端