企业怎么搭建网站,校园网上超市网站建设战略规划,wordpress多媒体权限,网站接入服务商是什么文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br… 文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Broker 地址创建 Topictopic创建验证 Topic 是否成功创建检查 RocketMQ 集群状态自动创建消费者组Consumer Group查看消费者组列表关联配置可选注意事项手动创建消费者组备用方案 创建自定义网络
docker network create my-rocketmq-network创建NameServer容器
docker run -di --network my-rocketmq-network -p 9876:9876 --namermqserver \
-e JAVA_OPT_EXT-server -Xms128m -Xmx128m -Xmn128m \
-e JAVA_OPTS-Duser.home/opt \
foxiswho/rocketmq:server-4.5.1创建Broker容器
docker run -di --network my-rocketmq-network -p 10911:10911 -p 10909:10909 --namermqbroker \
-e JAVA_OPTS-Duser.home/opt \
-e JAVA_OPT_EXT-server -Xms128m -Xmx128m -Xmn128m \
foxiswho/rocketmq:broker-4.5.1sudo iptables -t nat -L -n --line-numbers
使用 -n 参数禁止端口到服务名称的解析NAT表主要用于网络地址转换包括DNAT目标地址转换和SNAT/MASQUERADE源地址转换。PREROUTING链处理进入的数据包修改目标地址POSTROUTING链处理离开的数据包修改源地址。DOCKER链是Docker服务自动生成的规则用于容器网络的管理。 MASQUERADE的作用是动态源地址转换常用于动态IP的环境DNAT则是目标地址转换用于端口转发。同时Docker创建的规则可能会影响用户手动添加的规则尤其是在PREROUTING链中规则顺序的问题Docker的规则可能优先执行导致用户规则未生效。 Chain INPUT (policy ACCEPT)
num target prot opt source destinationChain INPUT (policy ACCEPT)
无规则直接接受所有流量默认策略为 ACCEPT。num target prot opt source destination
1 DOCKER all -- anywhere !loopback/8 ADDRTYPE match dst-type LOCAL含义将所有目标地址为 本地主机 IP 且源地址 不是环回网段!loopback/8即非 127.0.0.0/8的流量转发到 DOCKER 链。隐藏信息Docker 使用此规则处理从本地主机发往容器网络的流量。删除 Docker 的冲突规则sudo iptables -t nat -D DOCKER 7sudo iptables -t nat -I PREROUTING 1 -p tcp --dport 9876 -j DNAT --to-destination 内网ip:9876正式开始
启动 Nameserver 容器
docker run -d --name rmqserver -p 9876:9876 -e JAVA_OPT_EXT-server -Xms256m -Xmx256m -Xmn128m -e JAVA_OPTS-Duser.home/opt foxiswho/rocketmq:server-4.3.2启动 Broker 容器并关联 Nameserver
docker run -d --name rmqbroker -p 10911:10911 -p 10909:10909 --link rmqserver:namesrv -e NAMESRV_ADDRnamesrv:9876 -e JAVA_OPT_EXT-server -Xms256m -Xmx256m -Xmn128m -e JAVA_OPTS-Duser.home/opt -e BROKER_IP1公网IP foxiswho/rocketmq:broker-4.3.2–link rmqserver:namesrv # 关联 Nameserver 容器 -e “NAMESRV_ADDRnamesrv:9876” # 使用容器别名访问 Nameserver docker exec -it rmqbroker vi /etc/rocketmq/broker.conf
brokerClusterName DefaultCluster
brokerName broker-a
brokerId 0
deleteWhen 04
fileReservedTime 48
brokerRole ASYNC_MASTER
flushDiskType ASYNC_FLUSH
brokerIP1 公网ip
autoCreateTopicEnable true
listenPort 10911
haListenPort 10909
namesrvAddr 公网ip:9876
autoCreateProducerGrouptrue
检查 namesrv 解析
ping namesrv # 应返回 172.17.0.3rmqserver 容器的 IP
cat /etc/hosts # 确认 namesrv 指向 rmqserver 的 IP检查 Broker 注册状态
查看 Nameserver 中的 Broker 列表
docker exec -it rmqserver sh mqadmin clusterList -n namesrv:9876Nameserver 日志
docker logs -f rmqserverBroker 日志
docker logs -f rmqbroker检查容器日志
docker logs -f rmqserver | grep boot success # Nameserver 日志
docker logs -f rmqbroker | grep boot success # Broker 日志手动指定 Broker 地址创建 Topic
如果自动注册失败直接指定 Broker 的地址
docker exec -it rmqbroker sh mqadmin updateTopic \-n namesrv:9876 \-t TopicTest \-b Broker 的公网 IP:10911 topic创建
docker exec -it rmqbroker sh mqadmin updateTopic -n namesrv:9876 -t TopicTest -b 公网ip:10911验证 Topic 是否成功创建
docker exec -it rmqbroker sh mqadmin topicList -n namesrv:9876sudo iptables -A INPUT -p tcp --dport 10909 -j ACCEPT网络模式选择 Bridge 模式Docker 默认使用 bridge 网络模式容器通过端口映射与宿主机通信。这种方式适合大多数场景且配置简单。 Host 模式如果你使用 host 模式容器会直接使用宿主机的网络栈端口映射不再需要但可能会带来端口冲突的问题。 NAT 模式NAT 模式通常用于虚拟机网络配置Docker 容器一般不使用 NAT 模式。 检查 RocketMQ 集群状态
通过命令
mqadmin clusterList -n 192.168.33.1:9876 确认 Broker 和 NameServer 状态正常。
查看 Broker 日志 检查 Broker 日志$ROCKETMQ_HOME/logs/rocketmqlogs/broker.log排查是否有存储或网络错误。 使用命令行工具验证 查询消息
mqadmin queryMsgByKey -n 192.168.33.1:9876 -t YourTopic -k YourKey查看生产者组列表
mqadmin producerConnection -n 192.168.33.1:9876 -g MyProducerGroup自动创建消费者组Consumer Group
在RocketMQ中订阅组Subscription Group包含消费者组的信息所以自动创建订阅组实际上就是自动创建消费者组。 还需要考虑不同RocketMQ版本的差异。例如4.5.0之后的版本可能默认行为不同或者某些配置项有变化。 默认情况下RocketMQ Broker 不会自动创建消费者组。需要通过以下配置显式启用 Broker 配置文件broker.conf
# 允许自动创建订阅组Subscription Group包含消费者组
autoCreateSubscriptionGroup true# 设置 Broker 权限6 表示读写权限
brokerPermission 6关键配置解释 autoCreateSubscriptionGrouptrue 允许 Broker 在消费者首次连接时自动创建订阅组Subscription Group即消费者组。 brokerPermission6 确保 Broker 有权限自动创建组默认值为 6即读写权限一般无需修改。
查看消费者组列表
通过 RocketMQ 控制台或命令行工具检查消费者组是否自动创建
mqadmin consumerConnection -n namesrv-address -g YourConsumerGroup检查 Broker 日志 观察 Broker 日志$ROCKETMQ_HOME/logs/rocketmqlogs/broker.log确认无权限错误或组创建失败信息。
关联配置可选
调整消费者组重试队列 如果消费者组需要重试队列Retry Queue可配置
# 每个订阅组的重试队列数量默认 1
retryQueueNums 1# 消费重试次数默认 16 次
retryMaxTimes 16注意事项
生产环境建议 自动创建功能适合开发和测试环境。生产环境建议手动创建消费者组并通过控制台或 CLI 管理避免组名冲突或权限问题。
权限控制 如果 Broker 集群启用了 ACL访问控制列表需确保消费者客户端有权限创建订阅组。
版本兼容性 RocketMQ 4.5.0 版本支持 autoCreateSubscriptionGroup低版本需升级。
手动创建消费者组备用方案
如果禁用自动创建可通过命令行手动创建订阅组
mqadmin updateSubGroup -n namesrv-address -c cluster-name -g YourConsumerGroup