当前位置: 首页 > news >正文

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();}}
}
  1. 停止容器
    完成实验后,我们可以通过以下方式停止容器。

停止 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版本的镜像为例&#xff0c;介绍部署过程。 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.02.创建容器共享网络 RocketMQ 中有多个服务&#xff0c;需要创建多个容器&#xff0c;创建 docke…...

linux安装mysql数据库(最完整的yum源安装)

1.下载YUM库 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm这里介绍一下wegt命令 wget 是一个非常强大的命令行工具&#xff0c;用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议&#xff0c;并且可以通过HTTP代理进行下载。以下是 wget 的…...

工业物联网关-TCP透传

TCP透传功能提供类似于DTU(Data Transmit Unit)的功能&#xff0c;用户在网络端使用TCP协议连接网关&#xff0c;与串口通道绑定&#xff0c;建立起TCP与串口的通道&#xff0c;网关相当于一个中转点。 菜单选择"数据上行-tcp透传"&#xff0c;查看当前透传通道列表&…...

sentinel原理源码分析系列(六)-统计指标

调用链和统计节点构建完成&#xff0c;进入统计指标插槽&#xff0c;统计指标在最后执行的&#xff0c;等后面的插槽执行完&#xff0c;资源调用完成了&#xff0c;根据资源调用情况累计。指标统计是最重要的插槽&#xff0c;所有的功能都依靠指标数据&#xff0c;指标的正确与…...

【代理模式使用场景】

一般来说&#xff0c;代理模式使用场景是远程代理、虚拟代理、安全代理等。下面来详细介绍下这三个场景是什么&#xff0c;实现原理和特点。不过在介绍三个场景前&#xff0c;我们还是先来回顾下代理模式。 代理模式 定义 是结构型设计模式&#xff0c;引入一个对象控制对另…...

ARM-8 代码还原动态调试之 pstree 条件表达式

out_string(lvl level - 1 ? last ? sym->last_2 : sym->branch_2 : more[lvl 1] ? sym->vert_2 : sym->empty_2); 条件表达式执行顺利&#xff1a; lvl level - 1 ? last ? sym->last_2 : sym->branch_2 : more[lvl 1] ?…...

Spring Boot技术栈在电影评论网站中的应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

DDOS防护

DDoS攻击简介 分布式拒绝服务&#xff08;DDoS&#xff09;攻击是一种网络攻击方式&#xff0c;通过控制大量的受感染系统&#xff08;称为“僵尸网络”&#xff09;向目标服务器发送大量的网络流量或请求&#xff0c;目的是使目标服务器超载&#xff0c;无法提供正常服务。这…...

【Vue】Vue(九)OptionsAPI与CompositionAPI的区别

文章目录 OptionsAPI与CompositionAPI在代码使用和逻辑上的区别一、代码使用方面的区别&#xff08;一&#xff09;组件定义的结构&#xff08;二&#xff09;响应式数据的定义与使用&#xff08;三&#xff09;逻辑复用的实现方式 二、逻辑方面的区别&#xff08;一&#xff0…...

MySQL 【日期】函数大全(四)

目录 1、MAKEDATE() 根据年份和一年中天数创建一个日期并返回。 2、MAKETIME() 指定的时、分、秒创建一个时间并返回。 3、MINUTE() 函数提取并返回时间的分钟部分。 4、MONTH() 函数提取日期的月份部分并作为数字返回。 5、MONTHNAME() 返回给定日期的月份的名字。 6、N…...

Jlink 直接读取单片机数据

1. 驱动版本 因人而异&#xff0c;这里我使用的是 “J-Flash V6.96” 本人驱动链接&#xff1a;夸克网盘 提取码&#xff1a;rgzk 2. 打开软件 3. 创建jlink工程 4. 选择芯片 此处本人使用芯片 “STM32F103VCT6” 5. 连接单片机 连接成功反馈 6. 读取单片机内部数据 …...

VScode运行C语言终端输出中文乱码问题解决方案

VScode运行C语言输出中文乱码问题解决方案 由于 VSCode 的终端是对系统的 cmd 命令行工具的调用&#xff0c;而 cmd 的默认编码为 GBK。当我们在 VSCode 中以 UTF-8 编码进行代码编写且代码里含有中文字符时&#xff0c;在终端运行代码便会出现中文乱码现象。要解决此问题&…...

Leetcode刷题. 贪心算法

贪心算法&#xff1a; 比较传统的解释&#xff1a;将整个问题拆解为几个小问题&#xff0c;找到小问题的最优解&#xff0c;加起来就是整个问题的全局最优解。对于现在的我理解贪心就是一种感觉&#xff0c;给出证明很难&#xff0c;解题思路一般就是认真读题&#xff0c;发掘题…...

强化学习的数学原理-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 函数参数传递错误 学习日期&#xff1a;20241018 学习目标&#xff1a;函数&#xfe63;-54 避坑指南&#xff1a;列表作为参数传递出错了怎么办&#xff1f; 学习笔记&#xff1a; 列表类型的特殊性 list1[x,y,z] tuple1(list1,b,c)# 修改元组中的列表&#xff0c;会…...

思迅商云8修改最大找零金额

执行如下语句前请备份数据库 -POS收银找零金额最大数 --把下面SQL中的 1000.00 改成你想要的金额数&#xff0c;再到查询分析器中执行&#xff1a; --总店 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)

一、分析工具和模拟环境&#xff08;Analysis tools and the simulation environment&#xff09; 模拟计算完成后&#xff0c;模拟计算数据紧接着写到模拟工程文件中&#xff1b;甚至当模拟计算提前结束时计算得到的部分数据集也会写到文件中。当模拟完成后单击退出按钮、或者…...

思迅商云8会员积分全部清0

请您备份数据库后执行以下语句&#xff1a; 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 实例上的一个方法&#xff0c;允许我们在下次 DOM 更新循环结束后执行一个回调。这通常用于需要访问更新后的 DOM状态的场景。由于 Vue 在数据变化后并不会立即更新 DOM&#xff0c;而是进行异步批处理&#xff0c;使用 $nextTick可以保…...

python办公:批量PDF合并—通用版

目录 专栏导读1、库的介绍2、库的安装3、核心代码3、提供测试PDF生成代码5、完整代码进阶版总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——> 一…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...