Go微服务: 基于rocketmq:5.2.0搭建RocketMQ环境,以及示例参考

概述

  • 参考最新官方文档:https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose
  • 以及:https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard
  • 综合以上两个文档来搭建环境

搭建RocketMQ环境


1 ) 基于 docker-compose 来搭建

version: '3.8'services:namesrv:image: apache/rocketmq:5.2.0container_name: rmqnamesrvports:- 9876:9876networks:- rmqcommand: sh mqnamesrvbroker:image: apache/rocketmq:5.2.0container_name: rmqbrokerports:- 10909:10909- 10911:10911- 10912:10912volumes:- ./conf/broker.conf:/opt/rocketmq-5.2.0/conf/broker.conf # 挂载入自定义配置文件environment:- NAMESRV_ADDR=rmqnamesrv:9876depends_on:- namesrvnetworks:- rmqcommand: sh mqbroker -c /opt/rocketmq-5.2.0/conf/broker.conf # 使用自定义配置文件启动proxy:image: apache/rocketmq:5.2.0container_name: rmqproxynetworks:- rmqdepends_on:- broker- namesrvports:- 8080:8080- 8081:8081restart: on-failureenvironment:- NAMESRV_ADDR=rmqnamesrv:9876command: sh mqproxydashboard:image: apacherocketmq/rocketmq-dashboard:latestcontainer_name: rocketmq-dashboardports:- 8088:8080networks:- rmqenvironment:- JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876depends_on:- namesrvrestart: unless-stoppednetworks:rmq:name: rmqdriver: bridge
  • 以上配置,是基于官方的2个文档综合而成的一个 yaml 配置文件
  • 注意,如果 broker 中不配置 conf 文件,对 brokeIP 进行指定,则会使用容器内的地址
  • 这时候,就需要自己的程序同样运行在相关的docker网络或打通和上述docker网络之间的连通
  • 这个涉及到部署时的网络畅通,非常重要,在写程序的时候,可以像上述指定配置

2 )对于 proxy 的特别说明

  • 在上述Docker Compose配置中,proxy服务指的是RocketMQ的代理服务
  • 具体来说,它对应的是RocketMQ提供的一个可选组件——RocketMQ Proxy
  • 虽然RocketMQ Proxy并非RocketMQ的核心组件(核心组件主要是Nameserver和Broker)
  • 但它扮演着重要的角色,特别是在提高系统可用性和简化客户端接入方面
  • 以下是关于RocketMQ Proxy的一些详细说明

2.1 )作用与目的

  • 简化客户端配置
    • 客户端只需要连接到Proxy
    • 而不需要关心具体的Nameserver和Broker的地址,这减少了客户端的配置复杂度
    • 尤其是在Broker集群规模大或频繁变动的情况下
  • 负载均衡与高可用
    • Proxy可以对客户端请求进行负载均衡,自动转发到不同的Broker
    • 同时如果Broker发生故障,Proxy也能自动切换到其他可用Broker,提高了系统的高可用性
  • 协议转换
    • 虽然现代的RocketMQ客户端通常直接支持与Broker交互
    • 但Proxy可以提供额外的协议转换能力,使得老版本或非标准的客户端也能接入
  • 安全控制
    • 作为中间层,Proxy可以更容易地实施访问控制、身份验证和加密等安全措施,增强系统安全性。

2.2 )配置与使用

  • 在上述配置中,proxy服务通过以下方式定义:
    • 映射端口:8080:8080和8081:8081,这通常是Proxy的HTTP和HTTPS端口,用于客户端的连接。
    • 环境变量:NAMESRV_ADDR=rmqnamesrv:9876,指定了Proxy需要连接到的Nameserver地址,这是为了获取Broker信息以进行消息路由。
    • 重启策略:restart: on-failure,意味着当Proxy服务因某种原因失败时,Docker会自动尝试重启它,增加了服务的健壮性。
    • 命令:command: sh mqproxy,这是启动Proxy服务的命令,表明这是一个RocketMQ Proxy实例

2.3 )注意事项

  • 性能考量:虽然Proxy带来了便利性和高可用性,但它是作为额外的一层存在,可能会引入额外的网络延迟和资源开销,尤其是在处理大量请求时
  • 版本兼容性:确保Proxy的版本与RocketMQ Broker和Nameserver版本兼容,以避免潜在的通信或功能问题
  • 配置优化:实际部署时,可能需要根据业务需求调整Proxy的配置,比如日志级别、最大连接数、超时时间等,以达到最佳性能和稳定性
  • 综上所述,proxy在RocketMQ部署中提供了客户端与RocketMQ集群间的中介服务,旨在简化客户端配置、提升系统的灵活性和高可用性

3 )./conf/broker.conf 文件

  • 参考前文:https://blog.csdn.net/Tyro_java/article/details/139453388

4 )运行和验证

  • 运行:$ docker compose up -d
  • 验证:$ docker ps

打开 UI 界面验证

  • 访问: http://127.0.0.1:8088

代码实现


1 )方式 1

  • 参考前文:https://blog.csdn.net/Tyro_java/article/details/139453388
  • 此种方式仍可用

2 )方式2

  • 同样使用 rocketmq-client-go
  • 参考官方示例 : https://github.com/apache/rocketmq-client-go/tree/master/examples

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

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

相关文章

K8S==ingress配置自签名证书

安装openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 生成证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.local.key -out example.local.crt -subj "/CNexample.local/Oexample.local"创建K8S secr…

【JVM】已验鼎真,鉴定为:妈妈加载的(双亲委派模型)

【JVM】已验鼎真,鉴定为:妈妈加载的(双亲委派模型) 在Java的世界中,类加载器(ClassLoader)是Java虚拟机(JVM)用来动态加载类的基础组件。双亲委派模型(Paren…

Java基础27,28(多线程,ThreadMethod ,线程安全问题,线程状态,线程池)

目录 一、多线程 1. 概述 2. 进程与线程 2.1 程序 2.2 进程 2.3 线程 2.4 进程与线程的区别 3. 线程基本概念 4.并发与并行 5. 线程的创建方式 方式一:继承Thread类 方式二:实现Runable接口 方式三:实现Callable接口 方式四&…

C#操作MySQL从入门到精通(10)——对查询数据进行通配符过滤

前言 我们有时候需要查询数据,并且这个数据包含某个字符串,这时候我们再使用where就无法实现了,所以mysql中提供了一种模糊查询机制,通过Like关键字来实现,下面进行详细介绍: 本次查询的表中数据如下: 1、使用(%)通配符 %通配符的作用是,表示任意字符出现任意次数…

【简单讲解TalkingData的数据统计】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

Python04:python代码设置作者/创建时间/文件名称

我们新建一个py文件时,如果希望文件开头有固定的内容,怎么设置呢? 比如代码作者、文件创建时间等。。。 1、点击左上角【Python】–>【Settings】设置 2、在弹出的新窗口找到【File and Code Templates】–>【Python Script】–>在右…

鸿蒙小案例-音乐播放器

之前参加鸿蒙比赛的音乐播放器 效果展示 HF音乐效果展示 功能列 有一些功能没写上去,自行发掘 说明: 1.API:网易云接口,QQ个人接口, 需要请看gitee 2.本地关系型数据由bug,提的工单已确认,建议使用API11,12,9的不稳…

java代码审计之fastjson反序列化漏洞

fastjson反序列化漏洞分析 Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。该产品主要提供了两个接口&…

创新入门|营销中的视频内容:不可或缺的策略

视频在营销中日益重要。你是否也发现,视频内容最近似乎无处不在?它占据着社交媒体的推文、网站首页,甚至电子邮件中的位置。事实上,并不是你一个人有这样的感受。在过去十年中,视频作为一种营销手段日益成熟和强大。这是因为,人类天生就是视觉动物。我们大脑处理视觉信息的速度…

Priority_queue

一、priority_queue的介绍和使用 1.1 priority_queue的介绍 1.优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 2.优先队列类似于堆, 在堆中可以随时插入元素, 并且只能检索最大堆…

硕士课程 可穿戴设备之作业一

作业一 第一个代码使用的方法是出自于[1]。 框架结构 如下图,不过根据对代码的解读,发现作者在代码中省去了对SSR部件的实现,下文再说。 Troika框架由三个关键部件组成:信号分解,SSR和光谱峰值跟踪。(粗…

word 无法自动检测拼写

word 有时候不能分辨是哪种语言,比如把英语错认为法语 。 例如:Interlaayer spacace,发现误认为是法语。 1、选中Interlaayer spacace 2、点击语言下拉按钮 选择设置校对语言 发现校对语言为法语 3、手动修改校对语言为英语,并点击确认。 4、发现现…

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分,手机里的功能可以满足大部分人的生活场景,但是最依赖的应该就是手机网络,手机网络突然变差怎么办——消息发不出去?刷新闻速度变慢?仔细检查后,发现其实不是手机…

【一步一步了解Java系列】:重磅多态

看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者:小闭…

E10:流程主表表单字段值变化触发事件

效果– //window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy();/…

Python量化交易学习——Part4:基于基本面的单因子选股策略

技术分析与基本面分析是股票价格分析最基础也是最经典的两个部分。技术分析是针对交易曲线及成交量等指标进行分析,基本面分析是基于公司的基本素质进行分析。 一般来说选股要先选行业,在选个股,之后根据技术分析选择买卖节点,因此针对行业及个股的基本面分析是选股的基础。…

排序算法集合

1. 冒泡排序 排序的过程分为多趟,在每一趟中,从前向后遍历数组的无序部分,通过交换相邻两数位置的方式,将无序元素中最大的元素移动到无序部分的末尾(第一趟中,将最大的元素移动到数组倒数第一的位置&…

【scikit-learn010】sklearn算法模型清单实战及经验总结(已更新)

1.一直以来想写下基于scikit-learn训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架模型算法包相关技术点及经验。 3.欢迎批评指正,欢迎互三,跪谢一键…

代码随想录算法训练营day41

题目:01背包理论基础、416. 分割等和子集 参考链接:代码随想录 动态规划:01背包理论基础 思路:01背包是所有背包问题的基础,第一次看到比较懵,完全不知道dp数据怎么设置。具体分析还是dp五部曲&#xff…

C#WPF数字大屏项目实战04--设备运行状态

1、引入Livecharts包 项目中&#xff0c;设备运行状态是用饼状图展示的&#xff0c;因此需要使用livechart控件&#xff0c;该控件提供丰富多彩的图形控件显示效果 窗体使用控件 2、设置饼状图的显示图例 通过<lvc:PieChart.Series>设置环状区域 3、设置饼状图资源样…