最近有个项目需要基于docker部署一个rocketmq集群。本文主要记录笔者如何根据官方工具自己动手制作最新版本rockermq的docker镜像。所谓官方工具可以通过github网站检索,具体地址:
Docker系列之Apache RocketMQ安装教程 64bit JDK 1.8 Docker version 1.13.1 1、查找安装rocketmq [root@localhost ~]# docker search rocketmq INDEX NAME DESCRIPTION STARS OFFICIAL AUTOM
为了开发方便,有时需要在本地部署rocketmq,使用docker是一个高性价比的方式,故有此文。
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。
注意个人使用了4.9.4的Rocketmq版本进行学习部署使用。因为windows上使用docker部署不同版本的RockerMq可能会有不同的情况,这里仅保证4.9.4的版本可以正确运行。
如果你还没有安装 Docker,请先安装。可以参考官方文档 https://docs.docker.com/install/ 进行安装
在之前的《浅入浅出消息队列》一文中,我们了解了消息队列的作用、优缺点和使用场景,相信你对消息队列已经有了一个大致的概念,文末给自己埋的坑说日后会写一篇实战教程,正好现在实习结束了,也许久没有写实战教程了,于是这就来填坑了。
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
docker compose 是 docker 的容器编排工具,它是基于 YAML 配置,YAML 是一种配置文件格式,支持传递环境变量,但是对于复杂的容器编排显得力不从心。
Apache RocketMQ是一个开源的分布式消息中间件系统,最初由阿里巴巴开发并贡献给Apache软件基金会。RocketMQ提供了高性能、高可靠性、高扩展性和低延迟的消息传递服务,适用于构建大规模分布式系统中的消息通信和数据同步。
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。至于有多简单呢,在本机已有Docker环境的情况下只需要三步即可。
Generate a RocketMQ docker image sh build-image.sh 4.5.0 alpine 📷 等几分钟。。。。 Successfully built cce61e4de59d Successfully tagged apacherocketmq/rocketmq:4.5.0-alpine docker images REPOSITORY TAG IMAGE ID CREATED
{RmHome} 要替换成你的宿主机想保存 MQ 的日志与数据的地方,通过 docker 的 -v 参数使用 volume 功能,把你本地的目录映射到容器内的目录上。否则所有数据都默认保存在容器运行时的内存中,重启之后就又回到最初的起点。
测试可用。最后的安装效果 [image.png] 我是使用-host模式的,可以使用其他模式。 本机安装 安装2个镜像 docker pull rocketmqinc/rocketmq docker pull styletang/rocketmq-console-ng 安装name-server(服务发现用的,类似zookeeper) 安装broker(队列服务器) docker run -d --net=host -p 9876:9876 -v /data0/soft_app/rocketmq/data
RocketMQ是一个分布式消息和流数据平台,具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。
通过之前文章的学习,我们已经对RocketMQ的基本架构有了初步的了解,那今天王子就和大家一起来点实际的,用代码和大家一起看看RocketMQ的几种发送模式和消费模式。好了,让我们开始吧。
1、启动NameServer 安装完RocketMQ包后,我们启动NameServer
在docker下安装rocketmq时候提示错误信息:/opt/rocketmq/conf/broker.conf (Is a directory)
docker下按照rocketmq。非compose安装。一步一步安装 一:编写broker.conf文件 文件位置:/opt/rocketmq/conf/ 下面这个是复杂版本。 # 所属集群名字 brokerClusterName=DefaultCluster # broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a, # 在 broker-b.properties 使用: broker-b brokerName=broker-
部署Apache RocketMQ需要准备NameServer、Broker、Proxy三个组件。它有几种部署模式:
1. 直接上官网,找到工程,clone 到本地,地址:https://github.com/apache/rocketmq-externals
RocketMQ有一个对其扩展的开源项目 ocketmq-console ,如今也提交给了 Apache ,
此命令为部署 Redis 集群,如果本地的 docker 没有 redis 的镜像,那么他会先自动下载再部署。
笔者为了简单快速,是直接调用rocketmq-console的ajax/http取现成数据,所以本例rocketmq-exporter的运行必须有对应的rocketmq-console实例。
安装docker镜像时,先去docker hub上查找对应的官方镜像,然后选择版本,然后根据描述汇中的命令来启动镜像
本文的宗旨在于通过简单干净实践的方式教会读者,使用 Docker 配置 RocketMQ 并在基于 DDD 分层结构的 SpringBoot 工程中使用 RocketMQ 技术。因为大部分 MQ 的发送都是基于特定业务场景的,所以本章节也是基于 《MyBatis 使用教程和插件开发》 章节的扩展。
本文是《一张图解析 RocketMQ》系列的第 1 篇,今天的内容主要分为三个部分:
RocketMQ官方GitHub上有一个项目rocketmq-externals,提供了很多扩展:
console是RockerMQ的扩展组件,console组件提供了图形化的界面,便于我们管理和监控RockerMQ。
Apache RocketMQ 存在远程命令执行漏洞(CVE-2023-33246)。RocketMQ的NameServer、Broker、Controller等多个组件暴露在外网且缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。
1. 按官方说明用 docker 部署 rocketmq ,启动 broker 报错:
这一步先拉取rocketmqinc/rocketmq镜像,docker pull rocketmqinc/rocketmq
笔者最近在使用rocketmq时,使用部署在docker中的rocketmq就会报“org.apache.rocketmq.client.exception.MQClientException: No route info of this topic”异常,win10本地启动同版本的rocketmq release库没有任何问题,搜索了许久仍然没有找到问题,关于这个问题,部分原因在笔者,笔者没有完全按照http://rocketmq.apache.org/docs/simple-example/ 里面的demo引入下面的rocketmq-client依赖,而是引入的rocketmq-spring-boot-starter这个依赖,示例代码如下:
通过yaml文件可知总共有三个组件:分别为nameserver, broker, web console
我们在分布式环境下一个业务可能会涉及到多个模块之间的调用,为了保证操作的原子性,分布式事务是最好的解决方案。
「单Master模式」风险较大,「一旦Broker重启或者宕机时,会导致整个服务不可用」。不建议线上环境使用,可以用于本地测试。
而docker默认隔离性不足,获取系统内存得到的是宿主机内存大小,导致内存不足启动失败(例如宿主机内存32G则计算结果为8G)
RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能。最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说RocketMQ是阿里巴巴的消息中间件,项目却在Apache的顶级项目中。
3.解放业务,使业务方专注于业务逻辑本身:通过注解以搭积木方式引入各式资源,每个资源都是一行注解,极大提升业务方产出效率。
随着平台的业务日益增多,基于数据库的全文搜索查询速度较慢,已经无法满足需求。所以,决定基于Elasticsearch 做一个全文搜索平台,支持业务相关的搜索需求。那么第一个问题就是:如何从MySQL同步数据到Elasticsearch?
本地开发会用docker部署诸如rocketmq的中间件,但是有一个问题,rocketmq-broker注册到namesrv上的ip是docker-ip,mac本地是不能直接访问的,需要打通docker和mac本地的网络,本文即解决此问题。
过去的 2 月份,EMQX 开源版发布了 v5.0.16、v5.0.17 以及 v5.0.18 三个版本,提供了 MQTT over QUIC 多流(multistream)支持。企业版 v4.3.19 以及 v4.4.15 开发完成,即将发布,数据集成将新增对 HStreamDB 最新版本的适配,并允许设置 RocketMQ 消息生产者投递策略,将相同属性的消息转发到同一 RocketMQ 队列(Queue)中。
(6).容器化部署saf-boot-starter-sample-allinone-service
消息队列是最古老的中间件之一,从系统之间有通信需求开始,就自然产生了消息队列。如果你还没有用过消息队列,那是时候好好学习一下了。本文告诉什么是消息队列,为什么需要消息队列,常见的消息队列有哪些, RabbitMQ 的部署和使用。
刚才的演示中,我们已经体验到了RocketMQ是如何工作的。这样,我们回头看RocketMQ的集群架构,就能够有更全面的理解了。
领取专属 10元无门槛券
手把手带您无忧上云