社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker搭建RocketMQ消息队列服务

院长技术 • 3 月前 • 144 次点击  

RocketMQ是一个由阿里巴巴开源并捐献给Apache的分布式消息中间件,它具有高吞吐、低延迟、海量消息堆积等特点,广泛应用于削峰填谷、异步解耦、顺序收发、分布式事务和大数据分析等场景。


RocketMQ基于分布式架构设计,可以轻松地实现水平扩展以满足高吞吐量和大规模部署的需求。它支持多个消息队列服务器(Broker)和多个消息消费者,以实现负载均衡和高可用性。同时,RocketMQ提供了严格的消息传递保证,包括顺序消息、事务消息、消息重试等机制,确保消息不会丢失。


此外,RocketMQ还支持多种消息模型,包括点对点(P2P)模型和发布/订阅(Pub/Sub)模型,可以满足不同场景下的需求。其丰富的功能还包括消息过滤、延迟消息、定时消息等,可以满足各种复杂的业务场景需求。


在性能方面,RocketMQ通过优化网络通信、存储和消息处理等方面的性能,实现了非常高的消息处理速度,并且支持异步消息发送和批量发送,进一步提高了消息的传输效率和吞吐量。


总的来说,RocketMQ是一个功能丰富、稳定可靠、性能优异的分布式消息队列系统,为企业提供了可靠的消息通信基础设施。




一、拉取RocketMQ镜像
首先,从Docker Hub上拉取RocketMQ的镜像。你可以根据需要选择特定的版本,或者拉取最新版本。
docker pull apache/rocketmq:latest
或者指定版本:
docker pull apache/rocketmq:5.1.0

二、创建Docker网络
为了确保RocketMQ的各个组件(如NameServer和Broker)能够相互通信,需要创建一个Docker网络。
docker network create rocketmq-net

三、部署NameServer
  1. 创建数据存储目录:
在宿主机上创建用于存储NameServer日志和数据的目录。
mkdir -p /data/rocketmq/nameserver/logs /data/rocketmq/nameserver/store

  2. 启动NameServer容器:
使用docker run命令启动NameServer容器,并挂载之前创建的日志和数据目录。
docker run -d --name rmqnamesrv --network rocketmq-net -p 9876:9876 \
   -v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \
   -v /data/rocketmq/nameserver/store:/home/rocketmq/store \
   apache/rocketmq:latest sh mqnamesrv

四、部署Broker
  1. 创建Broker数据存储路径:
在宿主机上创建用于存储Broker日志、数据和配置文件的目录。
mkdir -p /data/rocketmq/broker/logs /data/rocketmq/broker/store /data/rocketmq/broker/conf

  2. 创建Broker配置文件:
在/data/rocketmq/broker/conf目录下创建broker.conf文件,并配置Broker的相关参数,如所属集群名字、Broker名字、brokerId、nameServer地址等。

   # 所属集群名字
   brokerClusterName=DefaultCluster
   # broker名字
   brokerName=broker-a
   # 0表示Master,>0表示Slave
   brokerId=0
   # nameServer地址
   namesrvAddr=rmqnamesrv:9876
   # 其他配置...

  3. 启动Broker容器:
使用docker run命令启动Broker容器,并挂载之前创建的日志、数据和配置文件目录。
docker run -d --name rmqbroker --network rocketmq-net -p 10911:10911 -p 10909:10909 \
   -v /data/rocketmq/broker/logs:/home/rocketmq/logs \
   -v /data/rocketmq/broker/store:/home/rocketmq/store \
   -v /data/rocketmq/broker/conf/broker.conf:/opt/rocketmq-4.x.x/conf/broker.conf \
   --link rmqnamesrv \
   -e "NAMESRV_ADDR=rmqnamesrv:9876" \
   apache/rocketmq:latest sh mqbroker -c /opt/rocketmq-4.x.x/conf/broker.conf

注意:这里的rocketmq-4.x.x需要替换为你实际使用的RocketMQ版本。

五、验证部署
  1. 查看NameServer和Broker的日志:
使用docker logs命令查看NameServer和Broker的日志输出,确保它们已经成功启动并且没有错误。
docker logs -f rmqnamesrv
docker logs -f rmqbroker

  2. 测试消息发送和接收:
你可以编写一个简单的生产者(Producer)和消费者(Consumer)程序来测试RocketMQ的消息发送和接收功能。确保生产者能够成功发送消息到Broker,并且消费者能够从Broker接收到消息。

注意事项
  • 在生产环境中,建议使用Docker Compose或Kubernetes等工具进行容器的编排和管理。
  • 确保所有容器的端口不冲突,并且正确映射到宿主机。
  • 配置文件中的路径和参数需根据实际情况进行调整。
  • 如果遇到权限问题,可能需要修改挂载目录的权限或指定容器内部使用的用户。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178718
 
144 次点击