RocketMq实战(待完善)

目录

生产者

发送消息固定步骤

发送模式

1. 单向发送

2. 同步发送

3. 异步发送

生产消息完整代码

消费者

消费消息固定步骤

简单消费代码示例

消息模型

广播消息

顺序消息

延迟消息

批量消息

事务消息


生产者

发送消息固定步骤

1.创建消息生产者producer,并指定生产者组名
2.指定Nameserver地址, 也可配置环境变量NAMESRV_ADDR
3.启动producer。 可以认为这是消息生产者与服务端建立连接的过程。
4.创建消息对象,指定主题Topic、Tag和消息体
5.发送消息
6.关闭生产者producer,释放资源

发送模式

1. 单向发送

        // 发送单向消息producer.sendOneway(buildOneMessage());

2. 同步发送

        // 同步发送消息SendResult sendResult = producer.send(buildOneMessage());System.out.println("同步发送消息结果:" + sendResult);

3. 异步发送

        // 异步发送消息, 发送完回调, 注意:回调完之前, producer不能关闭producer.send(buildOneMessage(), new SendCallback() {// 成功回调@Overridepublic void onSuccess(SendResult sendResult) {System.out.println("异步发送消息结果:" + sendResult);}// broker处理失败回调, 超时回调, 进入onException也可能发送下游成功, 做好幂等性@Overridepublic void onException(Throwable throwable) {System.out.println("异步发送消息出现异常:" + throwable.getMessage());}});

生产消息完整代码

public class ProducerTest {public static void main(String[] args) throws MQClientException, RemotingException, InterruptedException, MQBrokerException {DefaultMQProducer producer = new DefaultMQProducer("producer_group");producer.setNamesrvAddr("192.168.6.128:9876");// 启动生产者producer.start();// 发送单向消息producer.sendOneway(buildOneMessage());System.out.println("单向发送消息, 不知道结果");// 同步发送消息SendResult sendResult = producer.send(buildOneMessage());System.out.println("同步发送消息结果:" + sendResult);// 异步发送消息, 发送完回调, 注意:回调完之前, producer不能关闭producer.send(buildOneMessage(), new SendCallback() {// 成功回调@Overridepublic void onSuccess(SendResult sendResult) {System.out.println("异步发送消息结果:" + sendResult);}// broker处理失败回调, 超时回调, 进入onException也可能发送下游成功, 做好幂等性@Overridepublic void onException(Throwable throwable) {System.out.println("异步发送消息出现异常:" + throwable.getMessage());}});
//        producer.shutdown();}private static Message buildOneMessage() {return new Message("kk_test_topic", "tagA", ("hello MQ" + new Random().nextInt(100)).getBytes());}
}

消费者

消费消息固定步骤

1.创建消费者Consumer,必须指定消费者组名
2.指定Nameserver地址
3.订阅主题Topic和Tag
4.设置回调函数,处理消息
5.启动消费者consumer。消费者会一直挂起,持续处理消息。

简单消费代码示例

public class SimpleConsumer {public static void main(String[] args) throws MQClientException {DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("kk_consumer_group1");consumer.setNamesrvAddr("192.168.6.128:9876");consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);consumer.subscribe("kk_test_topic", "*");consumer.registerMessageListener(new MessageListenerConcurrently() {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {for (MessageExt messageExt : list) {System.out.println("收到消息:" + new String(messageExt.getBody()));}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});consumer.start();System.out.println("consumer start ...");}
}

消息模型

广播消息

顺序消息

延迟消息

批量消息

事务消息

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

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

相关文章

操作系统的运行机制+中断和异常

一、CPU状态 在CPU设计和生产的时候就划分了特权指令和非特叔指令&#xff0c;因此CPU执行一条指令前就能断出其类型 CPU有两种状态&#xff0c;“内核态”和“用户态” 处于内核态时&#xff0c;说明此时正在运行的是内核程序&#xff0c;此时可以执行特权指令。 处于用户态…

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

环境准备Jenkins工具、环境、插件配置全局变量配置安装插件Deploy to containerMaven Integration plugin配置国内mvn源 创建maven项目 环境准备 1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage Jenkins>tools>JDK 安装 安装插件 Deploy to contai…

231206日课:高原反应的第三天

早冥读写跑&#xff08;早起、冥想、阅读、写作、跑步&#xff09; 践行第三天 一、知识基础 早起 冥想 阅读 写作 运动 二、个人化运用 日程复盘 优秀的AI生成的表格 汇总信息时间段安排睡眠时间20:54-04:57睡眠时间 (8小时3分钟)早晨时间安排04:57-05:00起床、洗漱早晨时间安…

C++异常抛出机制:throw和try_catch

文章目录 前言正文初识throw和try_catch深入&#xff08;std::runtime_error和std::exception&#xff09;异常处理的必要性 前言 还记得初学C的时候&#xff0c;我抱着《C primer 5th》这本书硬啃&#xff0c;作为一个初学者&#xff0c;里面很多东西当时都很不理解&#xff…

Docke自学笔记

概述 docker是什么呢&#xff1f;就是容器呀&#xff0c;像你用的Tomcat一样都是容器&#xff0c;只不过&#xff0c;docker可以用极少的资源来运行&#xff0c;极大的利用计算资源&#xff0c;不像你要隔离应用一样需要启用虚拟机&#xff0c;你的应用是部署在虚拟机上&#…

分割算法-大津算法

分割算法-大津算法 一、什么是大津算法二、算法原理三、公式推导四、代码五、算法适用性 大津算法介绍以及C函数代码实现。 一、什么是大津算法 大津算法&#xff08;Otsu&#xff09;由日本学者大津展之在1979年提出&#xff0c;又称最大类间方差法。此法求得的阈值&#xff…

智能井盖传感器怎么安装?井盖传感器介绍

一提到井盖相信大伙都不陌生。无论是城市的繁华商业街&#xff0c;还是乡村的宁静马路&#xff0c;随处都可以看到它的身影。它可能看起来普普通通&#xff0c;但却是城市基础设施中不可或缺的一部分。随着科学技术的发展对井盖的管理也越来越智能化&#xff0c;如多个地区纷纷…

【Quasar】暗黑主题随系统切换部分组件无法随系统切换

问题描述 Quasar部分组件无法随系统切换主题 。 假如系统、Quasar主题为白天模式。Quasar设置主题随系统切换&#xff0c;当系统切换暗黑模式时&#xff0c;Quasar导航栏无法正常切换为暗黑模式&#xff0c;此时背景还是白天模式&#xff0c;如图 正常切换参考图 正常暗黑…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《计及管网选型与潮流约束的区域综合能源系统分期协同规划》

这个标题涉及到区域综合能源系统的规划&#xff0c;其中考虑了两个关键因素&#xff1a;管网选型和潮流约束。下面对标题中的关键术语进行解读&#xff1a; 区域综合能源系统&#xff1a; 这指的是一个综合考虑多种能源形式&#xff08;比如电力、热能、气体等&#xff09;的系…

挑选数据可视化工具:图表类型、交互功能与数据安全

作为一名数据分析师&#xff0c;我经常需要使用各种数据可视化工具来将数据以直观、清晰的方式呈现出来&#xff0c;以便更好地理解和分析。在市面上的众多可视化工具中&#xff0c;我根据实际需求和项目特点进行选择。本文将从以下几个角度对市面上的数据可视化工具进行对比&a…

Python高级数据结构——B树和B+树

Python中的B树和B树&#xff1a;高级数据结构解析 B树和B树是一种多叉树&#xff0c;常用于处理大量数据的存储和检索操作。它们广泛应用于文件系统、数据库索引等领域&#xff0c;具有高效的插入、删除和搜索性能。在本文中&#xff0c;我们将深入讲解Python中的B树和B树&…

C++类和对象——(8)类的组合

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 人生就像骑单车&#xff0c;想保持平衡…

PHP入门软件Wampserver与vscode

PHP入门软件Wampserver与vscode Wampserver 一个集成的PHP环境&#xff0c;非常好用&#xff0c;上链接官网&#xff1a;https://www.wampserver.com/#download-wrapper 推荐华军https://www.onlinedown.net/soft/82112.htm 无脑下一步就行&#xff0c;会出现两个弹窗全点否。…

OMSA无法打开无法显示等服务异常时如何处理

文章目录 为何需要重启OMSAWindows 重启OMSA服务Linux 重启OMSA服务VMware 环境重启OMSA服务重启无效的解决办法推荐阅读 为何需要重启OMSA 在安装 OMSA 的服务器中&#xff0c;OMSA 管理软件运行可能会不稳定。例如&#xff1a; 某些信息&#xff08;如存储信息&#xff09;…

Redis quicklist源码+listpack源码(6.0+以上版本)

ziplist设计上的问题&#xff0c;每一次增删改都需要计算前面元素的空间和长度&#xff08;prevlen&#xff09;&#xff0c;这种设计缺陷非常明显&#xff0c;一旦其中一个entry发生修改&#xff0c;以这个entry后面开始&#xff0c;全部需要重新计算prevlen&#xff0c;因此诞…

nodejs+vue+微信小程序+python+PHP新闻发布系统的设计与实现-计算机毕业设计推荐

根据现实需要&#xff0c;此系统我们设计出一下功能&#xff0c;主要有以下功能模板。 &#xff08;1&#xff09;新闻发布系统前台&#xff1a;首页、时事新闻、公告资讯、个人中心。 &#xff08;2&#xff09;管理员功能&#xff1a;首页、个人中心、用户管理、新闻分类管理…

Open3D 进阶(19)间接平差法拟合平面

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 见:PCL 间接平差法拟合平面 二、代码实现 import numpy as np import open3d

24:kotlin 类和对象 -- 对象表达式和声明(Object expressions and declarations)

如果需要创建一个稍微修改了某个类的对象&#xff0c;而不需要显式地声明一个新的子类。Kotlin可以通过对象表达式&#xff08;object expressions&#xff09;和对象声明&#xff08;object declarations&#xff09;来处理这种情况。 对象表达式 对象表达式用于创建匿名类的…

中国移动频段划分

1、900MHz&#xff08;Band8&#xff09;上行&#xff1a;889-904MHz&#xff0c;下行&#xff1a;934-949MHz&#xff0c;带宽共计15MHz&#xff0c;目前部署&#xff1a;2G/NB-IoT/4G 2、1800MHz&#xff08;Band3&#xff09;上行&#xff1a;1710-1735MHz&#xff0c;下行…

kyuubi整合flink yarn application model

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catalogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 姊妹篇 k…