Springboot整合RocketMQ 基本消息处理

news2024/11/18 21:25:26

目录

1. 同步消息

2. 异步消息

3. 单向消息

4. 延迟消息

5. 批量消息

6. 顺序消息

 7. Tag过滤


导入依赖

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

YAML配置

rocketmq:
  name-server: localhost:9876     # rocketMq的nameServer地址

1. 同步消息

同步消息是发送消息后等待Broker的响应,确保消息被成功接收。

生产者:

   @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        SendResult result = rocketMQTemplate.syncSend("test", MessageBuilder.withPayload("同步消息").build());
//        SendResult result = rocketMQTemplate.syncSend("test", "同步消息");
        System.out.println("发送状态:" + result.getSendStatus() + " 消息id:" + result.getMsgId());
    }

2. 异步消息

异步消息是发送消息后不等待Broker响应,通过回调函数处理发送结果。

@Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        rocketMQTemplate.asyncSend("test", MessageBuilder.withPayload("异步消息").build(), new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("发送成功"+sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("发送失败"+throwable);
            }
        });
    }

3. 单向消息

单向消息是发送消息后不等待Broker响应,也没有回调函数。

    @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
      rocketMQTemplate.sendOneWay("test","单向消息");
    }

4. 延迟消息

延迟消息是设置消息的延迟时间,确保消息在指定时间后才被消费。

 @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        //在RocketMQ中,timeout(超时时间)是指消息发送的最大等待时间。当你发送一个消息时,系统会等待一定的时间来获取发送结果,这个等待的时间就是超时时间。单位ms
        Message<String> message = MessageBuilder.withPayload("延迟消息").build();
         //延迟级别 "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h" 2对应5s
        SendResult result = rocketMQTemplate.syncSend("test", message, 2000, 2);
    }

5. 批量消息

批量消息是将多个消息打包成一个消息批次发送,提高发送效率。

    @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        List<String> list = Arrays.asList("blue", "red", "pink", "yello");
        rocketMQTemplate.syncSend("test",list);
    }

上面所有生产者对应的消费者代码为:

@Component
@RocketMQMessageListener(topic = "test",consumerGroup = "test-group-consumer")
public class MQMsgListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt message) {
        String msgId = message.getMsgId();
        String msg = new String(message.getBody());
        System.out.println("消息id:"+msgId+"消息内容:"+msg);
    }
}

6. 顺序消息

顺序消息是保证同一个消息队列中的消息按顺序消费。

生产者代码:

    @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        for(int i=0;i<10;i++)
        {
            rocketMQTemplate.syncSendOrderly("test","顺序消息"+i,"1");
        }
    }

消费者代码更改:

@Component
@RocketMQMessageListener(topic = "test",consumerGroup = "test-group-consumer",consumeMode = ConsumeMode.ORDERLY)
public class MQMsgListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt message) {
        String msgId = message.getMsgId();
        String msg = new String(message.getBody());
        System.out.println("消息id:"+msgId+"消息内容:"+msg);
    }
}

 7. Tag过滤

消费者订阅的Tag和发送者设置的消息Tag相互匹配,则消息被投递给消费端进行消费。

生产者

    @Autowired
    RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
       rocketMQTemplate.syncSend("test:test","hello");
    }

消费者

@Component
@RocketMQMessageListener(topic = "test",consumerGroup = "test-group-consumer",selectorType = SelectorType.TAG,selectorExpression = "test")
public class MQMsgListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt message) {
        String msgId = message.getMsgId();
        String msg = new String(message.getBody());
        System.out.println("消息id:"+msgId+"消息内容:"+msg);
    }
}

 @RocketMQMessageListener 注解参数如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用可视化管理工具DockerUI远程管理docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

准博士生教你如何阅读论文

AI方向如何阅读论文 绪论会议整理一篇论文的主要结构AbstractIntroductionRelated WorkApproach(framework名称亦可)ExperimentsImplementation detailsResultsAblation StudyDiscussion Conclusion 如何阅读多篇论文怎样读/写related work怎样读approach结语 绪论 作为一位工…

SSM在线手机品牌商城----计算机毕业设计

项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,用户管理,品牌管理,子品牌管理,商品管理,订单管理,留言板管理等功能。 用户角…

华为交换机ETH-TRUNK链路聚合lacp模式与手工模式

SW1配置如下 vlan batch 10interface Eth-Trunk1port link-type trunkport trunk allow-pass vlan 10mode lacp-static #手工模式删除改行max active-linknumber 2 #手工模式删除改行trunkport GigabitEthernet 0/0/1 to 0/0/2#配置为主设备&#xff08;修改优先级&…

DevOps(8)

目录 36.当发出的命令与上次使用时产生的结果不同时&#xff0c;会出现什么问题&#xff1f; 37./usr /local的内容是什么&#xff1f; 38.你如何终止正在进行的流程&#xff1f; 39.如何在命令行提示符中插入注释&#xff1f; 40.什么是命令分组以及他是如何工作的&…

效果图渲染角度哪什么小技巧?

在创建效果图渲染时&#xff0c;正确设置相机角度对于表现设计的视觉效果至关重要。好的效果图通常能够增强设计图张力&#xff0c;通过效果图也能更好的看到真实物体的成果&#xff0c;以下是一些效果图渲染角度技巧&#xff0c;可以帮助你提高渲染的质量和表现力&#xff0c;…

odoo16 产品变体之体验

odoo16 产品变体之体验 最近接一个服装批发公司的业务,初步使用了一下产品变体功能,真的太棒了,记录一下使用的效果与注意事项,有此类需求或正在做此类功能的可以一块交流。 产品变体: 产品变体,做过服装类行业的程序员都知道,一个款式的衣服上市,通常会有好多种颜色…

C语言编译器(C语言编程软件)完全攻略(第四部分:VS2015下载地址和安装教程(图解))

介绍常用C语言编译器的安装、配置和使用。 四、VS2015下载地址和安装教程&#xff08;图解&#xff09; 为了更好地支持 Win10 程序的开发&#xff0c;微软发布了 VS2015。VS2015 支持开发人员编写跨平台的应用程序&#xff0c;从 Windows 到 Mac、Linux、甚至是编写 iOS 和 …

这些流行的K8S工具,你都用上了吗

关注【云原生百宝箱】公众号&#xff0c;获取更多云原生消息 本文介绍了一些流行的 Kubernetes 工具和常见的集群组件。例如 Helm 作为 Kubernetes 应用的包管理器&#xff0c;以及本地开发所需的 Kubernetes 发行版。另外提及了一些常见的集群组件&#xff0c;如集群自动缩放器…

产品需求分析——目标用户分析

目标用户官方解读&#xff1a;是指企业决定以相应产品去满足其需求&#xff0c;并为其服务的用户群体。 通俗来说&#xff0c;就是你的产品得设定个目标人群&#xff0c;在你设定目标人群的属性范围内设计产品的功能&#xff0c;产品设计一定要从客观的角度出发&#xff0c;可以…

如何访问GitHub快的飞起?两步解决访问超时GitHub,无法访问GitHub的问题

1.查找国内访问比较快的IP 站长工具网址&#xff1a; https://tool.chinaz.com 测速链接: https://tool.chinaz.com/speedtest/github.com 输入 github.com 点击查看分析 往下滑动&#xff0c;找一个比较快的IP&#xff0c;然后去修改hosts配置文件 &#xff08;例如&#xff…

【React系列】Portals、Fragment

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) Portals 某些情况下&#xff0c;我们希望渲染的内容独立于父组件&#xff0c;甚至是独立于当前挂载到的DOM元素中&am…

2023年广东省网络安全A模块(笔记详解)

模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 假定你是某企业的网络安全工程师&#xff0c;对于企业的服务器系统&#xff0c;根据任务要求确保各服务正常运行&#xff0c;并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多…

1.5C语言 双曲正弦函数(*) 优化麦克劳林公式

一.传统算法 #include<stdio.h> #include<math.h> int jc(int x); int main(){double x,eps,y0.0;scanf("%lf%lf",&x,&eps);int de1,i1;double item1.0;while(fabs(item)>eps){itempow(x,i)/jc(de);i2;yitem;}printf("%.6f\n",y); …

服务端如何防止订单重复支付

概述 如图是一个简化的下单流程&#xff0c;首先是提交订单&#xff0c;然后是支付。 支付的话&#xff0c;一般是走支付网关&#xff08;支付中心&#xff09;&#xff0c;然后支付中心与第三方支付渠道&#xff08;微信、支付宝、银联&#xff09;交互。 支付成功以后&…

最新GPT4.0使用教程,AI绘画,ChatFile文档对话总结+GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

Linux--系统安全及应用

1.1账号安全控制 用户账号是计算机使用者的身份凭证或标识&#xff0c;每个要访问系统资源的人&#xff0c;必须凭借其用户账号才能进入计算机。在Linux系统中&#xff0c;提供了多种机制来确保用户账号的正当、安全使用。 1.系统账号清理 在Linux系统中&#xff0c;除了用户手…

Python小项目:基于tkinter开发邮件发送程序

文章目录 1 前言2 项目概述2.1 项目目标2.2 功能列表2.3 技术概述 3 代码详解4 用户操作手册步骤1&#xff1a;安装依赖库步骤2&#xff1a;登录QQ邮箱开启SMPT服务&#xff08;很重要&#xff09;步骤3&#xff1a;填写发件人信息步骤4&#xff1a;填写收件人信息步骤5&#x…

数字孪生与物联网(IoT)技术的结合

数字孪生与物联网&#xff08;IoT&#xff09;技术的结合可以在多个领域实现更智能、更高效的应用。以下是数字孪生在物联网技术中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.实时监…

【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?

目录 一、像素级OCR统一模型&#xff1a;UPOCR1.1、为什么提出UPOCR&#xff1f;1.2、UPOCR是什么?1.2.1、Unified Paradigm 统一范式1.2.2、Unified Architecture统一架构1.2.3、Unified Training Strategy 统一训练策略 1.3、UPOCR效果如何&#xff1f; 二、OCR大一统模型前…