Docker 部署 RocketMQ
1.拉取RocketMQ镜像
这里以dockerhub上 RocketMQ 5.2.0版本的镜像为例,介绍部署过程。
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.0
2.创建容器共享网络
RocketMQ 中有多个服务,需要创建多个容器,创建 docker 网络便于容器间相互通信。
docker network create rocketmq
3.启动NameServer
启动 NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq apache/rocketmq:5.2.0 sh mqnamesrv
验证 NameServer 是否启动成功
docker logs -f rmqnamesrv
4.启动 Broker+Proxy
配置 Broker 的IP地址
echo “brokerIP1=127.0.0.1” > broker.conf
启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf
验证 Broker 是否启动成功
docker exec -it rmqbroker bash -c "tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log"
5.SDK测试消息收发
工具测试完成后,我们可以尝试使用 SDK 收发消息。这里以 Java SDK 为例介绍一下消息收发过程,可以从 rocketmq-clients 中参阅更多细节。
在IDEA中创建一个Java工程。
在 pom.xml 文件中添加以下依赖引入Java依赖库,将 rocketmq-client-java-version 替换成 最新的版本.
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>5.2.0</version></dependency>
注意 镜像是5.2.0 那么 依赖也必须是5.2.0
进入broker容器,通过mqadmin创建 Topic。
$ docker exec -it rmqbroker bash
$ sh mqadmin updatetopic -t TestTopic -c DefaultCluster
在已创建的Java工程中,创建发送普通消息程序并运行,示例代码如下:
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;public class RocketMQProducer {public static void main(String[] args) {// 创建一个生产者DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");try {// 设置 NameServer 的地址producer.setNamesrvAddr("localhost:9876");producer.start();// 创建消息Message msg = new Message("TopicTest", "TagA", "KeyA", "Hello RocketMQ".getBytes());// 发送消息producer.send(msg);System.out.println("Message sent: " + new String(msg.getBody()));} catch (Exception e) {e.printStackTrace();} finally {// 关闭生产者producer.shutdown();}}
}
在已创建的Java工程中,创建订阅普通消息程序并运行。Apache RocketMQ 支持SimpleConsumer和PushConsumer两种消费者类型,您可以选择以下任意一种方式订阅消息。
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;public class RocketMQConsumer {public static void main(String[] args) {// 创建一个消费者DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupName");try {// 设置 NameServer 的地址consumer.setNamesrvAddr("localhost:9876");consumer.subscribe("TopicTest", "*"); // 订阅主题和标签// 注册消息监听器consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {for (MessageExt msg : msgs) {System.out.println("Message received: " + new String(msg.getBody()));}return null; // 返回 null 表示消费成功});// 启动消费者consumer.start();System.out.println("Consumer started");} catch (Exception e) {e.printStackTrace();}}
}
- 停止容器
完成实验后,我们可以通过以下方式停止容器。
停止 NameServer 容器
docker stop rmqnamesrv
停止 Broker 容器
docker stop rmqbroker
docker 镜像安装rocketmq-dashboard
安装docker,拉取 rocketmq-dashboard 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq-dashboard:latest
docker 容器中运行 rocketmq-dashboard
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq-dashboard:latest
namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号
开放端口号:8080,9876,10911,11011 端口
云服务器:设置安全组访问规则
本地虚拟机:关闭防火墙,或 -add-port
源码安装
源码地址:apache/rocketmq-dashboard
下载并解压,切换至源码目录 rocketmq-dashboard-master/
① 编译 rocketmq-dashboard
① 编译 rocketmq-dashboard
$ mvn clean package -Dmaven.test.skip=true
运行 rocketmq-dashboard
$ java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
示:Started App in x.xxx seconds (JVM running for x.xxx) 启动成功
浏览器页面访问:namesrv.addr:8080
关闭 rocketmq-dashboard : ctrl + c
再次启动:执行 ②
tips:下载后的源码需要上传到 Linux 系统上编译,本地编译可能会报错。
相关文章:
Docker 部署 RocketMQ
1.拉取RocketMQ镜像 这里以dockerhub上 RocketMQ 5.2.0版本的镜像为例,介绍部署过程。 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.02.创建容器共享网络 RocketMQ 中有多个服务,需要创建多个容器,创建 docke…...
linux安装mysql数据库(最完整的yum源安装)
1.下载YUM库 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm这里介绍一下wegt命令 wget 是一个非常强大的命令行工具,用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,并且可以通过HTTP代理进行下载。以下是 wget 的…...
工业物联网关-TCP透传
TCP透传功能提供类似于DTU(Data Transmit Unit)的功能,用户在网络端使用TCP协议连接网关,与串口通道绑定,建立起TCP与串口的通道,网关相当于一个中转点。 菜单选择"数据上行-tcp透传",查看当前透传通道列表&…...
sentinel原理源码分析系列(六)-统计指标
调用链和统计节点构建完成,进入统计指标插槽,统计指标在最后执行的,等后面的插槽执行完,资源调用完成了,根据资源调用情况累计。指标统计是最重要的插槽,所有的功能都依靠指标数据,指标的正确与…...
【代理模式使用场景】
一般来说,代理模式使用场景是远程代理、虚拟代理、安全代理等。下面来详细介绍下这三个场景是什么,实现原理和特点。不过在介绍三个场景前,我们还是先来回顾下代理模式。 代理模式 定义 是结构型设计模式,引入一个对象控制对另…...
ARM-8 代码还原动态调试之 pstree 条件表达式
out_string(lvl level - 1 ? last ? sym->last_2 : sym->branch_2 : more[lvl 1] ? sym->vert_2 : sym->empty_2); 条件表达式执行顺利: lvl level - 1 ? last ? sym->last_2 : sym->branch_2 : more[lvl 1] ?…...
Spring Boot技术栈在电影评论网站中的应用
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
DDOS防护
DDoS攻击简介 分布式拒绝服务(DDoS)攻击是一种网络攻击方式,通过控制大量的受感染系统(称为“僵尸网络”)向目标服务器发送大量的网络流量或请求,目的是使目标服务器超载,无法提供正常服务。这…...
【Vue】Vue(九)OptionsAPI与CompositionAPI的区别
文章目录 OptionsAPI与CompositionAPI在代码使用和逻辑上的区别一、代码使用方面的区别(一)组件定义的结构(二)响应式数据的定义与使用(三)逻辑复用的实现方式 二、逻辑方面的区别(一࿰…...
MySQL 【日期】函数大全(四)
目录 1、MAKEDATE() 根据年份和一年中天数创建一个日期并返回。 2、MAKETIME() 指定的时、分、秒创建一个时间并返回。 3、MINUTE() 函数提取并返回时间的分钟部分。 4、MONTH() 函数提取日期的月份部分并作为数字返回。 5、MONTHNAME() 返回给定日期的月份的名字。 6、N…...
Jlink 直接读取单片机数据
1. 驱动版本 因人而异,这里我使用的是 “J-Flash V6.96” 本人驱动链接:夸克网盘 提取码:rgzk 2. 打开软件 3. 创建jlink工程 4. 选择芯片 此处本人使用芯片 “STM32F103VCT6” 5. 连接单片机 连接成功反馈 6. 读取单片机内部数据 …...
VScode运行C语言终端输出中文乱码问题解决方案
VScode运行C语言输出中文乱码问题解决方案 由于 VSCode 的终端是对系统的 cmd 命令行工具的调用,而 cmd 的默认编码为 GBK。当我们在 VSCode 中以 UTF-8 编码进行代码编写且代码里含有中文字符时,在终端运行代码便会出现中文乱码现象。要解决此问题&…...
Leetcode刷题. 贪心算法
贪心算法: 比较传统的解释:将整个问题拆解为几个小问题,找到小问题的最优解,加起来就是整个问题的全局最优解。对于现在的我理解贪心就是一种感觉,给出证明很难,解题思路一般就是认真读题,发掘题…...
强化学习的数学原理-01基本概念
state: T h e s t a t u s o f a g e n t w i t h r e s p e c t t o t h e e n v i r o n m e n t The \quad status \quad of \quad agent \quad with \quad respect \quad to \quad the \quad environment Thestatusofagentwithrespecttotheenvironment (agent 相对于环境的…...
D41【python 接口自动化学习】- python基础之函数
day41 函数参数传递错误 学习日期:20241018 学习目标:函数﹣-54 避坑指南:列表作为参数传递出错了怎么办? 学习笔记: 列表类型的特殊性 list1[x,y,z] tuple1(list1,b,c)# 修改元组中的列表,会…...
思迅商云8修改最大找零金额
执行如下语句前请备份数据库 -POS收银找零金额最大数 --把下面SQL中的 1000.00 改成你想要的金额数,再到查询分析器中执行: --总店 use hbposv8 go insert t_sys_system (sys_var_id, sys_var_value, sys_var_name) values (pos_max_givchg, 1000.00, 最…...
Lumerical学习——分析工具(Analysis tools)
一、分析工具和模拟环境(Analysis tools and the simulation environment) 模拟计算完成后,模拟计算数据紧接着写到模拟工程文件中;甚至当模拟计算提前结束时计算得到的部分数据集也会写到文件中。当模拟完成后单击退出按钮、或者…...
思迅商云8会员积分全部清0
请您备份数据库后执行以下语句: declare card_id varchar(20), acc_num numeric(16,4), dec_num numeric(16,4), minus_num numeric(16,4), branch_no varchar(4), count int select branch_nosys_var_value fro…...
$nextTick原理
一、什么是 $nextTick $nextTick 是 Vue 实例上的一个方法,允许我们在下次 DOM 更新循环结束后执行一个回调。这通常用于需要访问更新后的 DOM状态的场景。由于 Vue 在数据变化后并不会立即更新 DOM,而是进行异步批处理,使用 $nextTick可以保…...
python办公:批量PDF合并—通用版
目录 专栏导读1、库的介绍2、库的安装3、核心代码3、提供测试PDF生成代码5、完整代码进阶版总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一…...
新手入门:在快马上手第一个web项目,用图表解读技术职级薪资数据
新手入门:在快马上手第一个web项目,用图表解读技术职级薪资数据 最近想学习前端开发,但一直找不到合适的入门项目。直到看到阿里P10薪资这个话题,突然觉得可以做个简单的数据可视化页面来练手。作为一个完全的新手,我…...
如何用Python实现非奇异快速终端滑模控制(NTSM)?附完整仿真代码
Python实现非奇异快速终端滑模控制(NTSM)的工程实践指南 滑模控制因其强鲁棒性在工业控制领域广受青睐,但传统方法存在奇异性与抖振问题。本文将手把手带您用Python实现非奇异快速终端滑模控制(Non-singular Terminal Sliding Mode Control, NTSM),包含完…...
AI建站工具分人群解决方案:中小企业主、运营、外贸人分别怎么选
同样是想要一个网站,中小企业主、市场运营、外贸负责人、个人创作者的内心诉求,其实天差地别。老板看重的是成本和品牌形象;运营人员关心的是好不好改、能不能帮我获取线索;外贸人则把多语言和海外访问速度放在第一位。今天这篇文…...
SecGPT-14B多场景:安全设备日志归一化、威胁情报摘要生成、钓鱼邮件识别
SecGPT-14B多场景实战:安全设备日志归一化、威胁情报摘要生成、钓鱼邮件识别 在网络安全领域,每天面对海量的安全日志、繁杂的威胁情报和层出不穷的钓鱼邮件,安全分析师常常感到力不从心。手动处理这些信息不仅耗时耗力,还容易遗…...
破局Xbox存档困境:XGP-save-extractor技术原理与实战指南
破局Xbox存档困境:XGP-save-extractor技术原理与实战指南 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 用户痛点场景剧场…...
从视频收藏到内容管理:BilibiliDown图形化下载器深度解析
从视频收藏到内容管理:BilibiliDown图形化下载器深度解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirror…...
3小时掌握拼多多数据采集:Scrapy框架实战指南
3小时掌握拼多多数据采集:Scrapy框架实战指南 【免费下载链接】scrapy-pinduoduo 拼多多爬虫,抓取拼多多热销商品信息和评论 项目地址: https://gitcode.com/gh_mirrors/sc/scrapy-pinduoduo 对于电商数据分析和市场研究从业者而言,获…...
DecompilerMC:揭秘Minecraft源码反编译的高效方案
DecompilerMC:揭秘Minecraft源码反编译的高效方案 【免费下载链接】DecompilerMC This repository allows you to decompile any minecraft version that was published after 19w36a without any 3rd party mappings, you just need to execute the script or the …...
如何在Windows系统上高效安装和管理Android应用:APK Installer完整指南
如何在Windows系统上高效安装和管理Android应用:APK Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 对于需要在Windows电脑上运行Androi…...
8GB显存跑大模型?Qwen3-0.6B-FP8部署与效果实测全记录
8GB显存跑大模型?Qwen3-0.6B-FP8部署与效果实测全记录 1. 引言:轻量级大模型的新选择 在AI模型日益庞大的今天,如何在有限硬件资源上运行高效的大语言模型成为开发者关注的焦点。Qwen3-0.6B-FP8作为阿里达摩院最新推出的轻量级模型࿰…...
