Docker安装RocketMQ 4.8

news2025/2/23 18:29:23

1拉取4.8镜像

docker pull foxiswho/rocketmq:4.8.0

拉取控制台镜像

docker pull styletang/rocketmq-console-ng

2创建rocketmq使用的共有网络,便于相互访问

docker network create rocketmq_network

3启动rmqnamesrv

docker run -d --name rmqnamesrv --network rocketmq_network -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" -p 9876:9876 foxiswho/rocketmq:4.8.0 sh mqnamesrv

–name rmqnamesrv:指定容器名称为rmqnamesrv,注意这个名字,后续会使用。

–network rocketmq_network:为容器指定网络为rocketmq_network,同一网络下的容器能够通过容器名称互通。

4启动rmqbroker

创建映射日志文件夹 赋予权限

mkdir -p /data/docker/rocketmq/logs
 chmod 777 logs

创建映射配置文件/data/docker/rocketmq/conf/broker.conf 编辑文件内容 broker.conf

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
mesrvAddr = 66.88.14.183:9876
brokerIP1 = 66.88.14.183
listenPort = 10911

启动rmqbroker

docker run -d --name rmqbroker --network rocketmq_network  --privileged=true  -v /data/docker/rocketmq/logs:/home/rocketmq/logs/rocketmqlogs  -v    /data/docker/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf -e "NAMESRV_ADDR=rmqnamesrv:9876" -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" -p 10911:10911 -p 10912:10912 -p 10909:10909 foxiswho/rocketmq:4.8.0 sh mqbroker autoCreateTopicEnable=true -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf

–privileged=true:如果使用-v映射了目录,则使用该参数获取文件访问权限

(容器之间可以通过容器名称链接)
验证容器之间是否互通:# 进入broker容器

docker exec -it rmqbroker /bin/bash

ping name-server的容器名称

ping rmqnamesrv

5启动rmqconsole

docker run -d --name rmqconsole --network rocketmq_network --link rmqnamesrv:rmqnamesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8180:8080 -t styletang/rocketmq-console-ng

访问8180端口 出现下图搭建成功
如果失败 进去rmqbroker容器中 查看下日志 并且查询是否 ping rmqnamesrv 通容器
在这里插入图片描述

6 SpringBoot测试是否可用

引入pom依赖

		<dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.8.0</version>
        </dependency>

消费者代码

public class Consumer {
    public static void main(String[] args) throws MQClientException {
        /*消息接受*/
        //1. 创建消息消费者, 指定消费者所属的组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myproducer-group");
        //2. 指定Nameserver地址
        consumer.setNamesrvAddr("66.66.14.183:9876");
        //3.指定消费者订阅的主题和标签
        consumer.subscribe("broker-a", "myTag");
        //4.设置回调函数,编写处理处理消息的方法
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                                                            ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt msg : msgs) {
                    String s = new String(msg.getBody(), StandardCharsets.UTF_8);
                    System.out.println(s);
                }
                //返回消费状态
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        //5.启动消费者
        consumer.start();
    }
}

生产者代码

public class Provider {
    public static void main(String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
        /*消息发送*/
        //1. 创建消息生产者, 指定生产者所属的组名
        DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");
        //2. 指定Nameserver地址
        producer.setNamesrvAddr("66.66.14.183:9876");
        //3. 启动生产者
        producer.start();
        //4. 创建消息对象,指定主题、标签和消息体
        String data = "holle word";
        Message msg = new Message("broker-a", "myTag", data.getBytes());
        //5. 发送消息
        SendResult sendResult = producer.send(msg, 10000);
        System.out.println(sendResult);
        //6. 关闭生产者
        producer.shutdown();
    }
}

测试结果
在这里插入图片描述
在这里插入图片描述
最后吐槽一下 csdn太恶心l 所有的文章都是copy的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑录屏怎样不录到外界声音?调整这一个开关,即可实现

​有很多小伙伴希望自己电脑录屏的时候&#xff0c;不要录制自己的声音&#xff0c;而是通过后期配音的方式完成视频创作。电脑录屏怎样不录到外界声音&#xff1f;其实只需要调整这一个开关&#xff0c;就能实现不录外界声音&#xff0c;一起来看看吧。 不录外界声音1&#xf…

什么是 Java 泛型?

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注&#xff01; 作者| 慕课网精英讲师 ColorfulC 通过本篇文章你将了解到什么是泛型&#xff0c;为什么需要泛型&#xff0c;如何使用泛型&#xff0c;如何自定义泛型&…

记一次以小勃大,紧张刺激的渗透测试(2017年老文)

零、前言 有技术交流或渗透测试培训需求的朋友欢迎联系QQ/VX-547006660&#xff0c;需要代码审计、渗透测试、红蓝对抗网络安全相关业务可以看置顶博文 2000人网络安全交流群&#xff0c;欢迎大佬们来玩 群号820783253 一、起因 emmm&#xff0c;炎炎夏日到来&#xff0c;这…

libxlsxwriter数据验证

今天要分享的这个问题其实也属于excel的高级用法。我们想通过libxlsxwriter来实现一个能对用户的输入进行数据验证的表格功能。 内心os&#xff1a;小白最近是不是有点走火入魔了……我们真的会遇上这样的场景吗&#xff1a;需要通过代码生成一个表格&#xff0c;这个表格中还有…

智慧机场,或将成为航空领域数字孪生技术得完美应用

在《智慧民航建设路线图》文件中&#xff0c;民航局明确指出&#xff0c;智慧机场是实现智慧民航的四个核心抓手之一。这一战略性举措旨在推进数字化技术与航空产业的深度融合&#xff0c;为旅客提供更加智能化、便捷化、安全化的出行服务&#xff0c;进一步提升我国民航发展的…

IO流进阶

&#x1f3e1;个人主页 &#xff1a; 守夜人st &#x1f680;系列专栏&#xff1a;Java …持续更新中敬请关注… &#x1f649;博主简介&#xff1a;软件工程专业&#xff0c;在校学生&#xff0c;写博客是为了总结回顾一些所学知识点 目录IO流进阶缓冲流缓冲流概述字节缓冲流(…

【LeetCode】剑指 Offer(1)

目录 写在前面&#xff1a; 题目1&#xff1a;剑指 Offer 03. 数组中重复的数字 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目2&#xff1a;剑指 Offer 06. 从…

JavaEE初阶---TCP/IP协议

一:概述 本文是网络编程的理论基础,也是网络部分的重点和难点,在笔试,面试中,这部分内容也多有考察.二:详解 TCP/IP五层协议 应用层传输层网络层数据链路层物理层 2.1应用层 我们自己编写的代码,就是在应用层,这也是在实际开发中接触最多的层.应用层里有许多现成的协议 , 而在…

springboot(5)静态资源访问前缀+欢迎页+REST风格的传递参数

Springboot的访问规则是 先访问controller的请求&#xff0c;如果没有的话&#xff0c;我们在访问静态资源。 但是静态资源过多的情况下这样不好处理&#xff0c;所以我们可以加一个前缀&#xff0c;这样可以拦截掉非静态资源的请求&#xff0c;每次都可以准确快速无风险的访…

镀镍废水处理,企业污水处理,离子交换树脂在镀镍废水中的应用

传统沉淀法不能满足日益提的环保要求(如电镀表三镍含量要求0.1mg/l以下)。针对特定重金属离子的特点&#xff0c;利用螯合树脂的特种功能基团与重金属离子形成络合物的特性&#xff0c;实现重金属离子的回收利用及深度去除。 CH-90Na对除铜镍铅锌钴锰等具有特定的选择性&#x…

API的应用

API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节 应用程序接口 想…

安卓|aar和jar打包引入流程演示

安卓|aar和jar打包引入流程演示aar和jar存在相关意义打包环境工具aar和jar|Module项目目录aar打包|引入总览步骤|aar配置打包创建java or kotlin类文件及资源|截图展示步骤|aar包引入jar打包|引入总览步骤|jar配置打包任务创建java类文件|截图展示步骤|jar包引入aar和jar运行在…

OpenTracing协议规范链接

一、官网链接 OpenTracing specificationhttps://opentracing.io/specification/不过目前OpenTracing项目已归档&#xff0c;不再维护。需要参考OpenTelemetry官网链接 Migrating from OpenTracing | OpenTelemetryBackward compatibility with OpenTracing has been a prior…

Promise 的理解

promise 是什么&#xff1f;promise 是JS 中进行异步编程的最新的解决方案从语法上来说&#xff1a;Promise 是一个构造函数从功能上来说&#xff1a;promise 对象时用来封装一个异步操作并可以获取其结果其三种状态&#xff0c;reasolve 、pendding、 rejectedPromise 的基本运…

计算机网络-ip数据报

在图中&#xff0c;网络层包含了四种协议&#xff1a;ARP、IP、ICMP、IGMP&#xff0c;由上下关系表明&#xff0c;ARP为IP协议服务&#xff0c;IP为ICMP和IGMP服务。 IP数据报格式 此处不区分数据报和分组的概念&#xff1a;当数据部分过长时&#xff0c;将数据部分拆分&…

2022年全国职业院校技能大赛A(1)

目录 模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一 登录安全加固 1.密码策略&#xff08;Windows&#xff0c;Linux&#xff09; a.设置最短密码长度为…

Python 之 NumPy 随机函数和常用函数

文章目录一、随机函数1. numpy.random.rand(d0,d1,…,dn)2. numpy.random.randn(d0,d1,…,dn)3. numpy.random.normal()4. numpy.random.randint()5. numpy.random.sample6. 随机种子np.random.seed()7. 正态分布 numpy.random.normal二、数组的其他函数1. numpy.resize()2. nu…

芯片是怎样“炼”成的?

在芯片设计完成&#xff0c;交由芯片制造厂&#xff08;Fab&#xff09;进行试产&#xff08;Tape out&#xff09;之后&#xff0c;就可以进行量产了。但Tape out是个漫长的过程&#xff0c;在此过程中&#xff0c;Fab里的工艺及设备工程师们需要不断调试&#xff0c;使得芯片…

Python优化算法—遗传算法

Python优化算法—遗传算法一、前言二、安装三、遗传算法3.1 自定义函数3.2 遗传算法进行整数规划3.3 遗传算法用于旅行商问题3.4 使用遗传算法进行曲线拟合一、前言 优化算法&#xff0c;尤其是启发式的仿生智能算法在最近很火&#xff0c;它适用于解决管理学&#xff0c;运筹…

全球认可的PMI认证体系

全球认可的PMI认证体系我们生活在一个“项目化”的世界里&#xff0c;而且这一趋势在不断加强。PMI的专业认证将使您做好准备&#xff0c;满足全球范围内各种项目、不同企业的需求。PMI的认证源于项目管理从业者&#xff0c;并服务于项目管理从业者。所有认证基于严格的标准和持…