【RocketMQ】SpringBoot集成RocketMQ

这篇具有很好参考价值的文章主要介绍了【RocketMQ】SpringBoot集成RocketMQ。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot集成RocketMQ
首先依旧是引入依赖

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

然后就可以编写发送不同类型消息的代码了文章来源地址https://www.toymoban.com/news/detail-660610.html

package blossom.project.springbootkp.seckillproducer;

import blossom.project.springbootkp.seckillproducer.entity.MsgModel;
import com.alibaba.fastjson.JSONObject;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.apache.rocketmq.spring.support.RocketMQHeaders;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;

import java.util.Arrays;
import java.util.List;

@SpringBootTest
class SecKillProducerApplicationTests {

    private List<MsgModel> msgModels = Arrays.asList(
            new MsgModel("qwer", 1L, "下单"),
            new MsgModel("qwer", 1L, "短信"),
            new MsgModel("qwer", 1L, "物流"),

            new MsgModel("zxcv", 2L, "下单"),
            new MsgModel("zxcv", 2L, "短信"),
            new MsgModel("zxcv", 2L, "物流")
    );

    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    @Test
    void syncProducer() {
        rocketMQTemplate.syncSend("bootTestTopic","使用springboot集成rocketmq");
    }
    @Test
    void asyncProducer(){
        rocketMQTemplate.asyncSend("bootTestTopic", "发送一条异步消息", new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("发送成功");
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("发送失败"+throwable.getMessage());
            }
        });
    }
    @Test
    void oneWayProducer(){
        rocketMQTemplate.sendOneWay("bootTestTopic","发送一个单向消息");
    }
    @Test
    void delayProducer(){
        Message<String> message = MessageBuilder.withPayload("这是一条延迟消息").build();
        rocketMQTemplate.syncSend("bootTestTopic",message,3000,2);
    }

    @Test
    void orderedProducer(){
        msgModels.forEach(x->{
            String s = JSONObject.toJSONString(x);
            rocketMQTemplate.syncSendOrderly("orderlyTopic", s,x.getOrderSn());
        });
    }
    @Test
    void tagProducer(){
        rocketMQTemplate.syncSend("bootTestTopic:tagA","我是一个带标签的消息");
    }
    @Test
    void keyProducer(){
        Message<String> message = MessageBuilder.withPayload("我是一个带有key的消息").setHeader(RocketMQHeaders.KEYS, "testKey")
                .build();
        rocketMQTemplate.syncSend("bootTestTopic",message);
    }
}
对于不同的消息类型,我们可以使用不同的方式去接收。
创建一个顺序消息的监听器
@Component
@RocketMQMessageListener(
        topic = "orderlyTopic",
        consumerGroup = "boot-orderly-consumer-group",
        consumeMode = ConsumeMode.ORDERLY, //顺序消费模式 单线程
        maxReconsumeTimes = 5) //最大重试次数
public class OrderlyMessageListener implements RocketMQListener<MessageExt> {


    @Override
    public void onMessage(MessageExt messageExt) {
        MsgModel msgModel = JSON.parseObject(new String(messageExt.getBody()), MsgModel.class);
        System.out.println(msgModel);
    }
}
普通的创建一个监听器
@Component
@RocketMQMessageListener(topic = "bootTestTopic",consumerGroup = "boot-consumuer-group")
public class SimpleMessageListener implements RocketMQListener<MessageExt> {

    /**
     * 这个方法就是消费者方法
     * 这里的String就是消息内容
     * 这里的泛型就是这里的参数类型
     * 如果泛型指定了固定的类型 那么消息体就是我们的参数
     * 如果我们的类型设定为具体的类型 那么我们只能拿到消息体
     * 而如果我们把消息类型设定为MessageExt类型,那么我们可以拿到消息头
     * ------------------------------------------------
     * 只要这个方法不报错 就会直接完成消息的接收 而如果报错了 就会重试
     * @param msg
     */
    @Override
    public void onMessage(MessageExt msg) {
        String keys = msg.getKeys();
        System.out.println("接收到的keys为"+keys);
        String body = new String(msg.getBody());
        System.out.println("接收到的消息体为"+body);

    }
}
创建一个识别tag标签的监听器
@RocketMQMessageListener(topic = "bootTestTopic",
    consumerGroup = "boot-tag-consumer-group",
selectorType = SelectorType.TAG, //tag过滤模式
selectorExpression = "tagA || tagB") //tag标签匹配模式
public class TagMessageListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt msg) {
        System.out.println(new String(msg.getBody()));
    }
}

到了这里,关于【RocketMQ】SpringBoot集成RocketMQ的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RocketMQ 学习教程——(二)SpringBoot 集成 RocketMQ

    在 Maven 仓库【https://mvnrepository.com/】中搜索 RocketMQ 依赖: 在 SpringBoot 项目的 Pom.xml 文件中添加对应 MQ 版本的依赖: YAML 配置 在 SpringBoot 项目的 yml 配置文件中添加以下配置: 创建监听器 创建一个 MQMsgListener 类用于监听 RocketMQ 的消息,类上标注注解: @Component 、 @RocketMQMe

    2024年02月03日
    浏览(42)
  • 动力节点RocketMQ笔记第三章RocketMQ集成SpringBoot

    22.1.1 创建项目,完整的pom.xml 22.1.2 修改配置文件application.yml 22.1.3 我们在测试类里面测试发送消息 往powernode主题里面发送一个简单的字符串消息 运行后查看控制台 22.1.4 查看rocketMq的控制台 查看消息细节

    2024年02月04日
    浏览(43)
  • RocketMQ视频笔记第三章RocketMQ集成SpringBoot(动力节点)

    本篇文章是RocketMQ视频笔记的第三章,重点介绍了如何将RocketMQ集成到Spring Boot框架中。通过学习该文章,读者能够掌握如何使用RocketMQ和Spring Boot进行消息传递和处理。

    2024年02月05日
    浏览(117)
  • Springboot 集成 RocketMq(入门)

    Linux 安装 RocketMq-CSDN博客 Springboot 集成 RocketMQ(进阶-消息)-CSDN博客

    2024年02月05日
    浏览(36)
  • SpringBoot 集成 RocketMQ

    🎈 作者: Linux猿 🎈 简介: CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬 目录 一、安装 RocketMQ 和 RocketMQ Dashboard 二、编写代码运行     本篇文章主要记

    2024年02月09日
    浏览(35)
  • SpringBoot3集成RocketMq

    标签:RocketMq5.Dashboard; RocketMQ因其架构简单、业务功能丰富、具备极强可扩展性等特点被广泛应用,比如金融业务、互联网、大数据、物联网等领域的业务场景; 在 rocketmq-starter 组件中,实际上依赖的是 rocketmq-client 组件的 5.0 版本,由于两个新版框架间的兼容问题,需要添

    2024年02月12日
    浏览(47)
  • Springbootg整合RocketMQ ——使用 rocketmq-spring-boot-starter 来配置发送和消费 RocketMQ 消息

           本文解析将 RocketMQ Client 端集成为 spring-boot-starter 框架的开发细节,然后通过一个简单的示例来一步一步的讲解如何使用这个 spring-boot-starter 工具包来配置,发送和消费 RocketMQ 消息。 添加maven依赖: 修改application.properties 注意: 请将上述示例配置中的 127.0.0.1:9876 替换

    2024年03月22日
    浏览(42)
  • SpringBoot集成Apache RocketMQ详解

    上个章节我们学习了RocketMQ的学习环境安装,讲了两种安装方式 1. docker使用官方镜像安装,2.使用源码方式安装。安装教程如下 如果已经安装了RocketMQ 学习环境可以略过此章节 《【实践篇(一)】RocketMQ入门之学习环境搭建》 本章节,我们学习Spring Boot 集成Apache RocketMQ。并验证

    2024年02月07日
    浏览(35)
  • RocketMQ集成Springboot --Chapter5

    生产者,由于springboot没有专门对mq进行tag标记的方法,只是在topic:后面加上,所以只需 rocketMQTemplate.sendOneWay(“tagFilterBoot:TagA”,msg1);标记即可 生产者代码如下 消费者在注解处添加selectorExpression = \\\"TagA || TagC\\\"表达式选项即可。 消费者代码如下 生产者 setHeader就是设置属性 生产

    2024年02月16日
    浏览(42)
  • RocketMQ集成Springboot --Chapter1

    RocketMQ集成Springboot 三种消息发送方式 生产者 引入依赖 消费者 引入依赖 实现一个监听器对象,重写其中的消费消息的方法。使用注解@RocketMQMessageListener(consumerGroup = “htpConsumerGroup”,topic = “helloTopicBoot”) consumerGroup组必须是唯一的,helloTopicBoot表示要监听的主题 最后生产者

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包