目前的机器资源还是很紧张, 单个虚拟机上只部署一个broker有点浪费.希望能实现交叉部署,如图
在配置文件 中配置好了 listenPort后
当一台虚拟机启动第二个 broker,报出如下异常
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:125)
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:498)
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1271)
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:413)
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:399)
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:1019)
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:198)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:349)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:358)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:374)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at java.lang.Thread.run(Unknown Source)
怀疑是 HaListenPort 的影响,又配置了HaListenPort
再次执行 报出相同异常,没办法,只能debug源码 去追查
使用 eclispe 本地debug broker源码,请参照 本系列文章 rocketMq实战(5)-本地调试broker源码
先加载 broker-c配置文件,再加载broker-d配置文件
broker-c配置如下
brokerClusterName=DefaultCluster
brokerName=broker-c
brokerId=0
listenPort=10911
haListenPort=10912
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
broker-d 配置如下
brokerClusterName=DefaultCluster
brokerName=broker-d
brokerId=0
listenPort=10923
haListenPort=10924
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
开始追踪
AbstractBootstrap 是ServerBootstrap 的父类 ,此处执行 address赋值
启动broker-d时,此处执行两次 第一次 port=23(明显是配置中的) 第二次 port=21(没有配置过啊)?
继续追踪localAddress
BrokerController-initialize()
有个默认的端口号bind 规则如下
设置默认端口号
如果加载了配置文件 则获取配置文件中的端口号,到此 知道 bug产生的原因,如果两个 broker的listenPort配置 间隔小于2 则会出现上面的bug
HaListenPort 配置了也无效
broker-c,broker-d 占用情况端口号如下
综上所诉
HaListenPort配置上是无效的,规则:HaListenPort:nettyServerConfig.getListenPort() + 1
broker启动时有一个默认的端口号bind,规则如下
nettyServerConfig.getListenPort() - 2
由此可知 如果两个 broker的listenPort配置 间隔小于2 则会出现上面的bug.
最后我配置策略如下
broker-c: listentPort=11
broker-c: listentPort=23
相关推荐
RocketMQ-Console是RocketMQ项目的扩展插件,是一个图形化管理控制台,提供Broker集群状态查看,Topic管理,Producer、Consumer状态展示,消息查询等常用功能,这个功能在安装好RocketMQ后需要额外单独安装、运行。...
rocketmq监控 查看rocketmq.namesrv对应下的broker、topic、consuemr/producer等
RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息...
JAVA-ACE-架构师系列视频教程RocketMQ订单实战上目录介绍: 1001_RocketMQ_简介 2002_RocketMQ_核心概念详解 3003_RocketMQ_集群构建模型详解(一) 4004_RocketMQ_集群构建模型详解(二) 5005_RocketMQ_双主模式...
007-007_RocketMQ_Broker配置文件详解 008-008_RocketMQ_helloworld示例讲解 009-009_RocketMQ_整体架构概述详解 010-010_RocketMQ_Producer_API详解 011-011_RocketMQ_Producer_顺序消费机制详解 012-012_RocketMQ_...
007-007_RocketMQ_Broker配置文件详解 008-008_RocketMQ_helloworld示例讲解 009-009_RocketMQ_整体架构概述详解 010-010_RocketMQ_Producer_API详解 011-011_RocketMQ_Producer_顺序消费机制详解 012-012_RocketMQ_...
vim /opt/rocketmq-4.7.1/conf/broker.conf - 启动(顺序) systemctl start mqnamesrv systemctl start mqbroker --查看状态 systemctl status mqnamesrv systemctl status mqbroker --停止(顺序) systemctl ...
7007_RocketMQ_Broker配置文件详解20:38 8008_RocketMQ_helloworld示例讲解34:29 9009_RocketMQ_整体架构概述详解15:36 10010_RocketMQ_Producer_API详解24:49 11011_RocketMQ_Producer_顺序消费机制详解24:37 12012...
注意 如果你的微服务或者项目在开发的时候没有放入docker中或者与rocketmq容器不能直接用IP访问, 那么请把broker.conf中的 #brokerIP1=192.168.0.253 前面#号去掉,并且把后面的IP地址改成你的rocketmq容器宿主机IP...
检查是否成功:jps -1 验证是否正常: 启动消费者(先后输入):set NAMESRV_ADDR=192.168.1.144:9876 tools.cmd org.apache.rocketmq.example.quickstart.Consumer 启动生产者(先后输入):set NAMESRV_
RocketMQ部署实战集成包,内含两个一键启动/停止脚本,start-all.sh和stop-all.sh;【./start-all.sh】一键启动mqnamesrv、mqbroker、mq-console。 【./stop-all.sh】一键停止mqnamesrv、mqbroker、mq-console。
rocketmq控制台 安装文档 http://blog.csdn.net/liu_zhaoming/article/details/77837881 [-] 安装环境 安装 编译克隆 配置jvm内存 配置启动mqnamesrv 配置启动broker 关闭服务器 配置windows控制台github 创建bat...
制作RocketMQ-Broker镜像需要的材料,制作方法见https://blog.csdn.net/wenyichuan/article/details/110541706
RocketMQ-Console是RocketMQ项目的扩展插件,是一个图形化管理控制台,提供Broker集群状态查看,Topic管理,Producer、Consumer状态展示,消息查询等常用功能,这个功能在安装好RocketMQ后需要额外单独安装、运行 ...
9999-RocketMQ配置参数大全-持续收录Broker配置参数收录所属集群名字附加:如果有多个master,那么每个master配置的名字应该一样,要不然
【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置.pdf【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置.pdf
nohup sh mqbroker -c ../conf/2m-noslave/broker-a.properties >broker.out 2>&1 & nohup sh mqbroker -c ../conf/2m-noslave/broker-b.properties >broker.out 2>&1 & 5. 停止 sh mqshutdown broker;sh ...
java8 源码 Apache RocketMQ Docker Apache RocketMQ Docker module ...修改rocketmq/distribution/conf/broker.conf 添加 listenPort = 10911配置【重要】 # 如果需要可以事先修改jvm参数配置,因为默
doris-1.1.3源码编译broker-maven依赖包repository
RocketMQ-Console是RocketMQ项目的扩展插件,是一个图形化管理控制台,提供Broker集群状态查看,Topic管理,Producer、Consumer状态展示,消息查询等常用功能,这个功能在安装好RocketMQ后需要额外单独安装、运行。