win10安装RocketMQ:
start mqnamesrv.cmd
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
linux安装RocketMQ:
nohup sh ./bin/mqnamesrv > ./logs/serv.log 2>&1 &
停止命令
nohup sh bin/mqshutdown namesrv
nohup sh ./bin/mqbroker -c ./conf/broker.conf -n 127.0.0.1:9876 > ./logs/broker.log 2>&1 &
#停止命令
nohup sh bin/mqshutdown broker
使用foxiswho/rocketmq镜像部署RocketMQ服务的步骤:
- 安装Docker和Docker Compose
在部署之前,需要先安装Docker和Docker Compose。可以通过以下命令在Ubuntu上安装Docker和Docker Compose:
sudo apt-get update
sudo apt-get install docker.io
sudo apt-get install docker-compose
- 创建RocketMQ配置文件
在本地环境中创建一个名为broker.conf
的文本文件,并将以下内容复制到其中:
brokerClusterName = DefaultCluster
brokerName = broker
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 127.0.0.1
listenPort=10911
namesrvAddr=rocketmq-namesrv:9876
# 建议将下面的参数保存到环境变量中,并在启动容器时传入
# rocketmq-broker-user=admin
# rocketmq-broker-passwd=admin123
admin.username=${rocketmq-broker-user}
admin.password=${rocketmq-broker-passwd}
这里使用了ASYN_MASTER的方式来启动Broker,这种方式适用于小规模场景。如果需要部署到生产环境,建议使用同步刷盘的方式。配置文件中namesrvAddr
是指Name Server的地址,此处可以填写部署在容器中的Name Server的容器名(rocketmq-namesrv),端口默认为9876。
- 编写docker-compose.yml文件
在本地环境中创建一个名为docker-compose.yml
的文件,并将以下内容复制到其中:
version: '3'
services:
rocketmq-namesrv:
image: foxiswho/rocketmq:4.7.1
command: sh mqnamesrv
ports:
- "9876:9876"
rocketmq-broker:
image: foxiswho/rocketmq:4.7.1
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
ports:
- "10911:10911"
- "10909:10909"
volumes:
- ./broker.conf:/opt/rocketmq/conf/broker.conf
environment:
rocketmq-broker-user: admin
rocketmq-broker-passwd: admin
JVM_OPTS: "-Drocketmq.namesrv.addr=rocketmq-namesrv:9876"
depends_on:
- rocketmq-namesrv
rocketmq-console:
image: foxiswho/rocketmq-console-ng:2.0.0
ports:
- "8080:8080"
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Drocketmq.config.namesrvAddr=rocketmq-namesrv:9876"
depends_on:
- rocketmq-namesrv
这个Compose文件包含三个服务:
- rocketmq-namesrv:用于启动Name Server容器。
- rocketmq-broker:用于启动Broker容器,使用之前创建的
broker.conf
文件作为配置文件。 - rocketmq-console:可选项,用于启动RocketMQ控制台容器,可以在Web界面上查看RocketMQ的状态。
- 启动服务
启动Docker Compose服务:
docker-compose up -d
该命令将启动三个容器,分别是rocketmq-namesrv(Name Server)、rocketmq-broker(Broker)、rocketmq-console(控制台)。
- 查看RocketMQ状态
在浏览器中访问:http://localhost:8080
,打开RocketMQ控制台页面。界面如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QlTDRMhn-1689309647368)(https://sevenmile-images.oss-cn-beijing.aliyuncs.com/rocketmq-console.png)]
点击状态-主题列表,可以看到相关主题的数据:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UalIv4yq-1689309647369)(https://sevenmile-images.oss-cn-beijing.aliyuncs.com/rocketmq-topic-list.png)]
至此,使用foxiswho/rocketmq镜像部署RocketMQ服务的步骤就完成了。
要将端口号9876,10911和10909添加到firewalld的允许列表中,可以使用以下命令:
sudo firewall-cmd --zone=public --add-port=9876/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10911/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10909/tcp --permanent
这将向“public”防火墙区域添加tcp协议的三个端口,并且这些规则将在防火墙重启时保留。
要删除这些端口的规则,可以使用以下命令:
sudo firewall-cmd --zone=public --remove-port=9876/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=10911/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=10909/tcp --permanent
并通过以下命令重新加载firewalld以使更改生效:
sudo firewall-cmd --reload
这些命令通过“–zone”选项指定了防火墙区域,通过“–add-port”和“–remove-port”选项指定了端口号,通过“–permanent”选项将新规则永久保存。