【tower-boot 系列】开源RocketMQ和阿里云rockerMq 4.x和5.x集成 (一)

RocketMQ 简单介绍

RockerMq

阿里云rockerMq 4.x和5.x集成

一、云平台创建实例

参考文档:
阿里云api

阿里云 创建实例
阿里云Rocker实例

二、skd集成思路

公司用的RocketMQ一般是自建开源apache的RocketMQ和上阿里云的RocketMQ,目前阿里云支持4.x和5.x版本
项目集成思路:
1、集成阿里RocketMQ 两个版本 4.x和5.x 支持版本配置和开源apache的RocketMQ集成
2、RocketProperties 单配置适用多版本集成
3、RocketConsumer 消费者注解,支持多版本集成(消费组监听器继承实现可以不一样,注解一致)
4、RocketMessageProducer 生产者接口,支持多版本集成,根据配置版本自动适配

注:这个是一个持续集成优化过程,需要不停磨练

三、根据RocketConsumer注解,动态监听器实现

1、核心逻辑代码:
扫描包注解,根据配置版本号走不同的,消费组创建

        String packageName = properties.getPackageName(); // 扫描包路径
        ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
        scanner.addIncludeFilter(new AnnotationTypeFilter(RocketConsumer.class));
        Set<BeanDefinition> candidates = scanner.findCandidateComponents(packageName);
        for (BeanDefinition beanDefinition : candidates) {
            try {
                Integer versions = properties.getVersions();
                if (Objects.equals(RockerMqVersions.ALI_4.getCode(), versions)) {
                    onsRocketMQConsumerClient.start(beanDefinition);
                }

                if (Objects.equals(RockerMqVersions.ALI_5.getCode(), versions)) {
                    rocketMQConsumerClient.start(beanDefinition);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

2、消费组push 用法示例
版本4.x 写法

@Slf4j
@Component
@RocketConsumer(topic = "PRODUCER_TOPIC", consumerGroup = "PRODUCER_GROUP")
public class Push4MQConsumer implements MessageListener {

    @Autowired
    private UserService userService;

    @Override
    public Action consume(Message message, ConsumeContext consumeContext) {
        String body = new String(message.getBody());
        log.info("TestMQConsumer:" + body + "user:" + userService.getUserId());
        return Action.CommitMessage;
    }
}

版本5.x 写法

@Slf4j
@Component
@RocketConsumer(topic = "PRODUCER_TOPIC", consumerGroup = "PRODUCER_GROUP")
public class TestMQConsumer implements MessageListener {

    @Autowired
    private UserService userService;

    @Override
    public ConsumeResult consume(MessageView messageView) {
        String body = StandardCharsets.UTF_8.decode(messageView.getBody()).toString();
        log.info("TestMQConsumer:" + body + "user:" + userService.getUserId());
        return ConsumeResult.SUCCESS;
    }
}

五、RocketMessageProducer 生产发送

目前只写5.x 写法,后面持续优化
普通消息

RocketMsg rocketMsg = new RocketMsg();
rocketMsg.setBody("hxl测试发送");
rocketMessageProducer.sendMessage("PRODUCER_TOPIC", null, rocketMsg);
return ApiResult.success();

延迟消息

RocketMsg rocketMsg = new RocketMsg();
rocketMsg.setBody("延迟消息发送发送");
rocketMessageProducer.sendMessage("DELAY_TOPIC", null, 5 * 60L, rocketMsg);

# github 地址:
[https://github.com/sanxiaoshitou/tower-boot](https://github.com/sanxiaoshitou/tower-boot)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

巨控协议转换网关GRM321GRM322GRM323应用场景

巨控工业协议网关GRM321,GRM322,GRM323是网口型网关&#xff0c;支持各种PLC的TCP协议&#xff0c;具备多路RS485,RS232和三个TCP网口。能实现RS485&#xff0c;RS232和TCP的工业协议的零代码无缝转换&#xff0c;能极大节约工程师编程时间&#xff0c;保障数据采集的可靠性。 …

无人机侦测:频谱无线电侦测设备技术详解

无人机侦测中的频谱无线电侦测设备技术是一项复杂而关键的技术&#xff0c;它主要通过分析无线电频谱中的信号来探测和识别无人机。以下是该技术的详细解析&#xff1a; 一、技术原理 频谱探测技术&#xff1a;该技术通过分析信号在频域上的分布和特性&#xff0c;来识别、测…

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用 On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang 1.概览 问题解决&…

荣业食品销售费用每年上亿元:主要产品收入大降,电商占比过低

《港湾商业观察》黄懿 今年3月&#xff0c;广东荣业食品有限公司的控股公司Wing Yip Food Holdings Group Limited&#xff08;下称“荣业食品”&#xff09;向美国SEC递交了纳斯达克上市申请。 据悉&#xff0c;2023年11月&#xff0c;商务部宣布移除了一批共计55家因长期经…

AI大模型的基本流程

这篇文章主要是记录自己的问题&#xff0c;虽然说AI大数据模型已经出现了很久&#xff0c;但是一直找不到它与企业的关系&#xff0c;因为有ghat gpt,只要应用这个人工智能就可以了&#xff0c;所以思想一直没有转变过来。 昨天梳理了一下AI大数据的模型&#xff0c;解答了我的…

VMware 虚拟机配置固定 IP

相关链接&#xff1a; SSH 服务配置与 Network error: Connection refused 解决 1. 查看 VMware 网络配置 点击【编辑】 -> 【虚拟网络编辑器】 选择【更改设置】查看 VMnet8 配置信息 选择【NAT设置】 查看当前虚拟机的网关是 192.168.17.2&#xff08;也可以进行修改…

Tpflow:提升开发效率的PHP工作流引擎

Tpflow&#xff1a;提升开发效率的PHP工作流引擎 今天要跟大家介绍的是一款能够显著提升开发效率的工具——Tpflow&#xff01;它是一个专门为PHP开发者设计的工作流引擎&#xff0c;致力于帮助你减少80%以上的代码量&#xff0c;轻松管理复杂的业务流程。让我们一起来看看它的…

java计算机毕设课设—超级玛丽游戏(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; 资源获取方式在最下方 java计算机毕设课设—超级玛丽游戏(附源码、文章、相关截图、部署视频) 超级玛丽游戏是一款经典的平台游戏&#xff0c;自1985年推出以来&#xff0c;已成为全球玩家心目中的经典之作。玩家操控玛丽奥在多样化的关卡中进行冒…

【线程】线程池

线程池通过一个线程安全的阻塞任务队列加上一个或一个以上的线程实现&#xff0c;线程池中的线程可以从阻塞队列中获取任务进行任务处理&#xff0c;当线程都处于繁忙状态时可以将任务加入阻塞队列中&#xff0c;等到其它的线程空闲后进行处理。 线程池作用&#xff1a; 1.降…

如何使用ChatGPT,提示词篇之【编程代码】ChatGPT镜像网站

一、 ChatGPT可以做什么&#xff1f; ChatGPT能做的事情非常多&#xff01;它不仅仅是一个对话AI。以下是一些主要功能&#xff1a; 1. 回答问题&#xff1a;无论是学术问题、技术问题&#xff0c;还是生活琐事&#xff0c;ChatGPT都能提供帮助。 2. 写作助手&#xff1a;可以…

LeetCode - #124 二叉树中的最大路径和(Top 100)

文章目录 前言1. 描述2. 示例3. 答案关于我们前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新到 123 期…

大语言模型知识点分享

1 目前主流的开源模型体系有哪些&#xff1f; Prefix Decoder 系列模型 核心点&#xff1a; 输入采用双向注意力机制&#xff0c;输出为单向注意力。双向注意力意味着输入的每个部分都可以关注到输入的所有其他部分&#xff0c;这在理解上下文时具有很强的优势。 代表模型&a…

智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案

随着科技的飞速发展&#xff0c;视频监控技术在社会安全、企业管理及智慧城市建设等领域中扮演着越来越重要的角色。特别是在电力行业中&#xff0c;电站作为能源供应的关键设施&#xff0c;其安全性和稳定性至关重要。传统的人工监控方式已难以满足现代电站复杂多变的运行需求…

2024网安周 | 百度安全深度参与,探索人工智能与数字安全的融合发展之路

9月9日-15日&#xff0c;2024年国家网络安全宣传周在全国范围内统一举行&#xff0c;本届网安周继续以“网络安全为人民&#xff0c;网络安全靠人民”为主题&#xff0c;由中央宣传部、中央网信办、教育部、工业和信息化部、公安部、中国人民银行、国家广播电视总局、全国总工会…

计算机毕业设计 基于Python国潮男装微博评论数据分析系统的设计与实现 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

BACnet-NPDU(4)

前面抓取了BACnet 的UDP和RS485数据进行分析&#xff0c;现在做一下总结。 BACnet不管是走UDP还是RS485&#xff0c;里面的NPDU和APDU数据结构是一样的&#xff0c;只是BACnet的头不一样&#xff0c;这里做一下总结。 1、UDP的BACnet 头 BACnet/IP 使用 UDP 协议进行数据传输&a…

【综合性渗透利器】- TscanPlus

如果你在寻找一款轻量级、实用且开源的漏洞扫描工具&#xff0c;那么 TscanPlus 绝对值得一试。这款工具由 TideSec 团队打造&#xff0c;以其简洁、高效、易用的特点&#xff0c;广受好评&#xff0c;目前在github上拥有1.5k star。 为什么推荐 TscanPlus&#xff1f; 无论你…

探索Kombo:AI与API的完美结合

文章目录 探索Kombo&#xff1a;AI与API的完美结合背景介绍库的定义安装指南简单函数使用场景应用常见问题及解决方案总结 探索Kombo&#xff1a;AI与API的完美结合 背景介绍 在当今快速发展的人工智能领域&#xff0c;Kombo库以其独特的优势脱颖而出。Kombo是一个专注于AI的…

Python项目Flask框架整合Redis

一、在配置文件中创建Redis连接信息 二、 实现Redis配置类 import redis from config.config import REDIS_HOST, REDIS_PORT, REDIS_PASSWD, REDIS_DB, EXPIRE_TIMEclass RedisDb():def __init__(self, REDIS_HOST, REDIS_PORT, REDIS_DB, EXPIRE_TIME, REDIS_PASSWD):# 建立…

《治愈老奶奶账号,AI涨粉玩法,简单好上手》第178期副业项目拆解

正文 一、项目介绍 今天给大家带来的是最新的一个暴力涨粉玩法&#xff0c;这个副业赛道玩法 15 天涨了 30 万粉。 大家可以看一下这个账号&#xff0c;发了有 58 多个作品&#xff0c;现在是 33 万粉&#xff0c; 这个属于是图文账号&#xff0c;做的是那种温暖治愈系类型的…