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

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

相关推荐
{{uname}}7 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
goTsHgo8 小时前
Spring Boot 自动装配原理详解
java·spring boot
秋野酱12 小时前
基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)
java·spring boot·后端
qq_124987075312 小时前
原生小程序+springboot+vue医院医患纠纷管理系统的设计与开发(程序+论文+讲解+安装+售后)
java·数据库·spring boot·后端·小程序·毕业设计
伊成13 小时前
一文详解Spring Boot如何配置日志
java·spring boot·单元测试
bing_15813 小时前
Spring Boot 的自动配置为 Spring MVC 做了哪些事情?
spring boot·spring·mvc
嘵奇16 小时前
Spring Boot中HTTP连接池的配置与优化实践
spring boot·后端·http
Persistence___17 小时前
SpringBoot中的拦截器
java·spring boot·后端
嘵奇17 小时前
Spring Boot 跨域问题全解:原理、解决方案与最佳实践
java·spring boot·后端
堕落年代18 小时前
SpringBoot的单体和分布式的任务架构
spring boot·分布式·架构