SofaMQ一些常用的API
SofaMQ的十五种常用的API
引言
SofaMQ作为阿里巴巴开源的消息中间件,提供了丰富的API以支持各种消息传递场景。在本文中,我们将介绍SofaMQ的十五种常用API,并通过实例演示其用法。
1. Producer相关API
1.1 SofaMQProducer
SofaMQProducer是SofaMQ中用于生产消息的主要类。它提供了消息的创建、发送等功能。
示例:
SofaMQProducer producer = new SofaMQProducer();
producer.setInstanceName("producer");
producer.start();Message message = new Message("TopicTest", "TagA", "Hello, SofaMQ!".getBytes());
SendResult sendResult = producer.send(message);
System.out.println(sendResult);producer.shutdown();
1.2 SendResult
SendResult用于表示消息发送的结果,包含消息的状态、消息ID等信息。
示例:
// 假设前面的代码已执行,获取SendResult
System.out.println("消息ID:" + sendResult.getMsgId());
System.out.println("发送状态:" + sendResult.getSendStatus());
2. Consumer相关API
2.1 DefaultMQPushConsumer
DefaultMQPushConsumer是SofaMQ中用于消费消息的主要类。它支持推模式,即主动拉取消息。
示例:
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup");
consumer.setNamesrvAddr("localhost:9876");
consumer.subscribe("TopicTest", "TagA");consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {// 处理消息逻辑return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});consumer.start();
2.2 MessageListenerConcurrently
MessageListenerConcurrently是消息的并发消费接口,用于处理消费逻辑。
示例:
// 假设前面的代码已执行,注册MessageListenerConcurrently
consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {// 处理消息逻辑return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
3. 其他常用API
3.1 Message
Message表示要发送或接收的消息。可以设置消息的主题、标签、内容等。
示例:
Message message = new Message("TopicTest", "TagA", "Hello, SofaMQ!".getBytes());
3.2 TransactionListener
TransactionListener用于处理事务消息的逻辑,实现自定义的事务处理器。
示例:
// 假设前面的代码已执行,注册TransactionListener
producer.setTransactionListener(new TransactionListener() {@Overridepublic LocalTransactionState executeLocalTransaction(Message msg, Object arg) {// 执行本地事务return LocalTransactionState.COMMIT_MESSAGE;}@Overridepublic LocalTransactionState checkLocalTransaction(MessageExt msg) {// 检查本地事务状态return LocalTransactionState.COMMIT_MESSAGE;}
});
SofaMQ更多常用API介绍
4. 定时消息发送
4.1 MessageDelayLevel
MessageDelayLevel用于设置消息的延迟级别,以实现定时发送消息。
示例:
Message message = new Message("TopicTest", "TagA", "Hello, SofaMQ!".getBytes());
message.setDelayTimeLevel(MessageDelayLevel.ONE_HOUR);
SendResult sendResult = producer.send(message);
System.out.println(sendResult);
4.2 DelayMessageListener
DelayMessageListener是处理延迟消息的监听器接口,用于消费延迟消息。
示例:
// 假设前面的代码已执行,注册DelayMessageListener
consumer.registerMessageListener((DelayMessageListener) (msgs, context) -> {// 处理延迟消息逻辑return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
5. 批量发送与批量消费
5.1 批量发送消息
List<Message> messageList = new ArrayList<>();
for (int i = 0; i < 10; i++) {Message message = new Message("TopicTest", "TagA", ("Hello, SofaMQ! " + i).getBytes());messageList.add(message);
}
SendResult sendResult = producer.send(messageList);
System.out.println(sendResult);
5.2 批量消费消息
// 假设前面的代码已执行,注册BatchMessageListener
consumer.registerMessageListener((BatchMessageListener) (msgs, context) -> {// 处理批量消息逻辑return ConsumeBatchStatus.SUCCESS;
});
6. 顺序消息发送与消费
6.1 顺序消息发送
List<Message> messageList = new ArrayList<>();
for (int i = 0; i < 10; i++) {Message message = new Message("TopicOrderTest", "TagA", ("Hello, SofaMQ! " + i).getBytes());SendResult sendResult = producer.send(message, (list, message1, o) -> {// 根据业务逻辑确定消息发送顺序return list.get(0);}, null);System.out.println(sendResult);
}
6.2 顺序消息消费
// 假设前面的代码已执行,注册OrderMessageListener
consumer.registerMessageListener((OrderMessageListener) (msgs, context) -> {// 处理顺序消息逻辑return ConsumeOrderlyStatus.SUCCESS;
});
这些API涵盖了SofaMQ更多的特性,包括定时消息、延迟消息、批量发送与消费、顺序消息等。通过合理使用这些API,可以满足不同场景下的消息传递需求。
结语
通过上述实例,我们介绍了SofaMQ的十五种常用API,涵盖了消息的生产、消费、事务等方面。在实际应用中,根据业务需求选择合适的API,能够更加灵活高效地使用SofaMQ。
感谢阅读,希望这些实例对您在SofaMQ的使用过程中有所帮助。如有任何问题或建议,请留言讨论。
相关文章:
SofaMQ一些常用的API
SofaMQ的十五种常用的API 引言 SofaMQ作为阿里巴巴开源的消息中间件,提供了丰富的API以支持各种消息传递场景。在本文中,我们将介绍SofaMQ的十五种常用API,并通过实例演示其用法。 1. Producer相关API 1.1 SofaMQProducer SofaMQProduce…...
IIS 缓存, 更新后前端资源不能更新问题
解决办法: 通常只需要index.html 不缓存即可, 其他文件都是根据index.html 中的引用去加载; 正确的做法是在 站点下增加 web.config 文件, 内容如下: 我这个是因为目录下有个config.js 配置文件, 也不能缓存, 所以加了两个 <?xml version"1.0" encoding&quo…...
中科院罗小舟团队提出 UniKP 框架,大模型 + 机器学习高精度预测酶动力学参数
作者:李宝珠 编辑:三羊 中国科学院深圳先进技术研究院罗小舟团队提出了,基于酶动力学参数预测框架 (UniKP),实现多种不同的酶动力学参数的预测。 众所周知,生物体内的新陈代谢是通过各种各样的化学反应来实现的。这…...
组件中写选项的顺序(vue的问题)
为什么选项要有统一的书写顺序呢?很简单,就是要将选择和认知成本最小化。 副作用 (触发组件外的影响) el全局感知 (要求组件以外的知识) nameparent组件类型 (更改组件的类型) functional模板修改器 (改变模板的编译方式) delimiterscomments模板依赖 (…...
LUA 对象转excel
1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组,否则没有什么意义,即lua对象要是一个数组比较合理。这里使用开源的json.lua, 但是开源的,对于数字作下标的,或者是一个数组里,不同类型的key…...
深入理解 Flink(八)Flink Task 部署初始化和启动详解
JobMaster 部署 Task 核心入口: JobMaster.onStart();部署 Task 链条:JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …...
openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c
文章目录 openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c概述笔记END openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_paramfromdata.c 概述 开源工程包含的头文件类型是.inc, 要重命名为.h, 否则没有c头文件语法提示 从数组中载入大数p,q,g 建立ossl…...
【k8s】Kubernetes技术和相关命令简介
一、 Kubernetes简介 Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。kubernetes,简称K8s࿰…...
清晰光谱空间:全自动可调波长系统的高光谱成像优势
高光谱成像技术 高光谱成像技术是一种捕获和分析宽波长信息的技术,能够对材料和特征进行详细的光谱分析和识别。高光谱成像技术的实现通过高光谱相机,其工作原理是使用多个光学传感器或光学滤波器分离不同波长的光,并捕获每个波段的图像&…...
23.实战演练--个人主页
<?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBackup"true"an…...
[剪藏] - 任泽平年终演讲精华:点燃希望——2024中国经济十大预测
任泽平年终演讲精华:点燃希望——2024中国经济十大预测 泽平宏观 2023-12-23 08:01 发表于上海 12月22日22:30,任泽平年终秀“点燃希望乐观者前行——2024中国经济十大预测”圆满收官。 泽平宏观、北京广播电视台、上海高净值研究院、北京时间等携手打…...
基于LabVIEW的压力传感器测试系统
摘要 现在各类压力传感器已广泛应用于各种工业自控环境,对压力传感器的研究 及应用,既可以体现一个国家的科技发展水平,又可以提升国家的综合国力,还 可以在丰富、方便和智能化人们的生活方面做出重要的贡献。而针对不同仪器组 成…...
Vue 如何使用WebSocket与服务器建立链接 持续保持通信
WebSocket 浏览器通过JavaScript向服务器发出建立WebSocket链接的请求,链接建立后,客户端和服务器端就可以通过TCP链接直接交互数据。WebSocket链接后可以通过send()方法来向服务器发送数据,并通过onnessage事件来接受服务器返回的数据。 创…...
自动驾驶模拟器
目录 Carla 自动驾驶模拟器 Udacity自动驾驶模拟器 Carla 自动驾驶模拟器 pip install carla 需要下载地图 Udacity自动驾驶模拟器...
Jmeter的文件参数化:CSV数据文件设置和_CSVRead函数
一、CSV数据文件设置 1、简介 CSV数据文件配置(CSV Data Set Config)可以将CSV文件中数据读入自定义变量中 Jmeter中CSV数据文件配置的界面如下图所示: 其中: (1)文件编码 文件的编码格式,与所…...
windows编译TensorFlowServing
概述 整个编译打包过程的总体思路,是参照在linux下的编译流程,配置环境,执行编译命令,根据编译器/链接器反馈的错误,修改相应的源码或者相关库文件的存放路径,编译出windows平台下静态库和二进制执行文件。…...
debian 12 安装 浏览器 Epiphany
Epiphany 什么epiphany-browser epiphany-browser 是: Epiphany 是一款简单而强大的 GNOME 网络浏览器,针对 非技术用户。它的原则是简单和标准 合规。 简单性是通过精心设计的用户界面和依赖来实现的 在用于执行外部任务(如阅读 电子邮件…...
Kafka-消费者-KafkaConsumer分析
与KafkaProducer不同的是,KafkaConsumer不是一个线程安全的类。 为了便于分析,我们认为下面介绍的所有操作都是在同一线程中完成的,所以不需要考虑锁的问题。 这种设计将实现多线程处理消息的逻辑转移到了调用KafkaConsumer的代码中&#x…...
Spring | Spring中的Bean--下
Spring中的Bean: 4.Bean的生命周期5.Bean的配装配式 ( 添加Bean到IOC容器的方式 依赖注入的方式 )5.1 基于XML的配置5.2 基于Annotation (注解) 的装配 (更常用)5.3 自动装配 4.Bean的生命周期 Spring容器可以管理 singleton作用域的Bean的生命周期,在此…...
本周五上海见 第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛(上海站)即将召开
低时延技术是证券基金期货领域业务系统的核心技术,是打造极速交易系统领先优势的关键,也是证券基金行业关注的前沿技术热点。 1月19日下午,第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛(上海站)即…...
纤维增强复合材料神经协同优化技术解析
1. 纤维增强复合材料协同优化技术概述纤维增强复合材料因其优异的比强度和比刚度特性,在航空航天、汽车制造等领域得到广泛应用。传统设计方法通常将结构拓扑优化与制造工艺规划分离处理,导致优化结果难以实际制造或性能大幅下降。我们提出的神经协同优化…...
巴别鸟vs坚果云:企业云盘同步机制踩坑与实战配置
干企业网盘这行,最怕听到用户说"同步慢"。我们2019年上线第一版云盘时,同步1GB的CAD图纸包要40分钟,用户骂完就跑。踩了三年坑才知道,"能同步"和"同步好用"根本是两回事。 本文从踩坑实录加配置实战…...
HDRP光照性能优化:探针体内存、阴影贴图与反射烘焙的底层控制
1. 这不是又一个“灯光插件”,而是HDRP光照工作流的手术刀我第一次在客户项目里看到UPGEN Lighting HDRP,是在一个实时虚拟制片场景的紧急优化现场。美术总监指着渲染帧率从28fps掉到14fps的监控面板说:“灯光一开,GPU就喘不上气—…...
微信聊天记录永久保存指南:5分钟掌握WeChatMsg完整备份方案
微信聊天记录永久保存指南:5分钟掌握WeChatMsg完整备份方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/…...
多模态大模型技术入门:让 AI 看见世界
多模态大模型技术入门:让 AI 看见世界 前言 人类感知世界的方式是多模态的——我们能看到图像、听到声音、读到文字。多模态大模型(Multimodal LLM)正是让 AI 拥有类似能力的关键技术。从 GPT-4V 到 Claude 3,从开源的 LLaVA 到 C…...
py每日spider案例之netease搜索接口获取
import requestsheaders = {"accept": "application/json, text/plain, */*","accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7","cache-control": "no-cache",...
算法实例分析:使数组相等的最小开销
使数组相等的最小开销通过题意分析可知要让所有值相等,必然不需要超出数据的最大最小值,因此左右边界可以预先缩小范围。然后根据我们上面的分析不断缩小搜索边界范围。关于函数的计算,只要统计所有数据与的差值再乘上权重即可。最后注意&…...
对比使用Taotoken前后在模型API费用支出上的月度观察
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比使用Taotoken前后在模型API费用支出上的月度观察 作为一名个人开发者,我日常的开发工作离不开大语言模型的辅助&am…...
英伟达市值“富可敌国”,AI基建核心地位稳固但仍有隐忧
英伟达市值惊人,超多数国家经济体截至2026年5月21日,英伟达的市值大约在5.5万亿美元。据悉,按IMF 2026年4月版《世界经济展望》的名义GDP预测,美国约32.38万亿美元,中国约20.85万亿美元,德国约5.45万亿美元…...
今日算法(构造二叉搜索树)
题目描述给你一个整数数组 nums,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树(BST)。平衡二叉搜索树:左右两个子树的高度差的绝对值不超过 1每个节点的左右子树都是平衡二叉树二叉搜索树的中序遍历结…...
