rocketmq排查队列分配的消费者情况
rocketmq生产者报连接超时
正常的rocketmq是启动在本地,但是在投递消息到本地生产者时经常会报超时。
这个时候就要检查对应的配置,这里定位到的是连接的broker的IP不是本机的IP.观察启动的broker日志
这个IP 主要来自broker的配置文件
brokerIP1=192.168.0.105
这个值通过查看本地的网卡,然后根据自己的实际地址进行更改配置文件,重启broker即可
rocketmq投递到MQ 但是消费不了
查看对应的消费者,发现对应的消费者消费出现负数。
以下截图不与上面相对应一致:
为了保持可以消费,需要先停掉rocketmq的服务,同时停掉模块,修改对应值,重启修复
rocketmq广播消费 消费不到
rocketmq 广播消费是需要把对应的数据保存到本地的目录下,默认是在
用户根目录/ .rocketmq_offsets/172.16.0.84@DEFAULT@1592448925517/g_mto_Y001_op 下,
LocalFileOffsetStore 有对应的逻辑。
当在同个机子上启动多个相同消费者时,会对这个本地的偏移量造成重复覆盖
原因:
集群模式下的消费者的instanceName会用PID,没有unitName影响不大,广播模式的instanceName是DEFAULT,不同实例之间会重复。
rocketmq出现从机子同步失败,导致mq启动失败
1、发现从机子的commitLog出现错误
2、删除从机子的data 和 config 文件夹,拷贝主机子的data和config文件夹到从机子,然后重启mq
rocketmq从节点配置出错恢复
1、停掉对应的从节点进程
2、备份从节点的data数据
3、修改从节点的brokerName与主节点相同
4、启动从节点,观察是否同步正常
rocketmq 在上报偏移量的时候,会报消费者已经关闭的状态
报错异常如下:
[2020-07-28 19:02:01] ERROR com.xuanwu.msggate.mtoserver.core.mqhandler.consumer.OffsetManager 241 lambda$new
2
−
e
r
r
o
r
w
h
i
l
e
r
u
n
o
f
f
s
e
t
U
p
d
a
t
e
T
h
r
e
a
d
o
r
g
.
a
p
a
c
h
e
.
r
o
c
k
e
t
m
q
.
c
l
i
e
n
t
.
e
x
c
e
p
t
i
o
n
.
M
Q
C
l
i
e
n
t
E
x
c
e
p
t
i
o
n
:
T
h
e
c
o
n
s
u
m
e
r
i
s
n
o
t
i
n
r
u
n
n
i
n
g
s
t
a
t
u
s
,
S
H
U
T
D
O
W
N
A
L
R
E
A
D
Y
S
e
e
h
t
t
p
:
/
/
r
o
c
k
e
t
m
q
.
a
p
a
c
h
e
.
o
r
g
/
d
o
c
s
/
f
a
q
/
f
o
r
f
u
r
t
h
e
r
d
e
t
a
i
l
s
.
a
t
o
r
g
.
a
p
a
c
h
e
.
r
o
c
k
e
t
m
q
.
c
l
i
e
n
t
.
i
m
p
l
.
c
o
n
s
u
m
e
r
.
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
I
m
p
l
.
i
s
R
u
n
n
i
n
g
(
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
I
m
p
l
.
j
a
v
a
:
105
)
[
c
l
a
s
s
e
s
/
:
?
]
a
t
o
r
g
.
a
p
a
c
h
e
.
r
o
c
k
e
t
m
q
.
c
l
i
e
n
t
.
i
m
p
l
.
c
o
n
s
u
m
e
r
.
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
I
m
p
l
.
f
e
t
c
h
C
o
n
s
u
m
e
O
f
f
s
e
t
(
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
I
m
p
l
.
j
a
v
a
:
111
)
[
c
l
a
s
s
e
s
/
:
?
]
a
t
o
r
g
.
a
p
a
c
h
e
.
r
o
c
k
e
t
m
q
.
c
l
i
e
n
t
.
c
o
n
s
u
m
e
r
.
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
.
f
e
t
c
h
C
o
n
s
u
m
e
O
f
f
s
e
t
(
D
e
f
a
u
l
t
M
Q
P
u
l
l
C
o
n
s
u
m
e
r
.
j
a
v
a
:
381
)
[
c
l
a
s
s
e
s
/
:
?
]
a
t
c
o
m
.
x
u
a
n
w
u
.
m
s
g
g
a
t
e
.
m
t
o
s
e
r
v
e
r
.
c
o
r
e
.
m
q
h
a
n
d
l
e
r
.
c
o
n
s
u
m
e
r
.
O
f
f
s
e
t
M
a
n
a
g
e
r
.
l
a
m
b
d
a
2 - error while run offsetUpdateThread org.apache.rocketmq.client.exception.MQClientException: The consumer is not in running status, SHUTDOWN_ALREADY See http://rocketmq.apache.org/docs/faq/ for further details. at org.apache.rocketmq.client.impl.consumer.DefaultMQPullConsumerImpl.isRunning(DefaultMQPullConsumerImpl.java:105) ~[classes/:?] at org.apache.rocketmq.client.impl.consumer.DefaultMQPullConsumerImpl.fetchConsumeOffset(DefaultMQPullConsumerImpl.java:111) ~[classes/:?] at org.apache.rocketmq.client.consumer.DefaultMQPullConsumer.fetchConsumeOffset(DefaultMQPullConsumer.java:381) ~[classes/:?] at com.xuanwu.msggate.mtoserver.core.mqhandler.consumer.OffsetManager.lambda
2−errorwhilerunoffsetUpdateThreadorg.apache.rocketmq.client.exception.MQClientException:Theconsumerisnotinrunningstatus,SHUTDOWNALREADYSeehttp://rocketmq.apache.org/docs/faq/forfurtherdetails.atorg.apache.rocketmq.client.impl.consumer.DefaultMQPullConsumerImpl.isRunning(DefaultMQPullConsumerImpl.java:105) [classes/:?]atorg.apache.rocketmq.client.impl.consumer.DefaultMQPullConsumerImpl.fetchConsumeOffset(DefaultMQPullConsumerImpl.java:111) [classes/:?]atorg.apache.rocketmq.client.consumer.DefaultMQPullConsumer.fetchConsumeOffset(DefaultMQPullConsumer.java:381) [classes/:?]atcom.xuanwu.msggate.mtoserver.core.mqhandler.consumer.OffsetManager.lambdanew
2
(
O
f
f
s
e
t
M
a
n
a
g
e
r
.
j
a
v
a
:
229
)
[
c
l
a
s
s
e
s
/
:
?
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
E
x
e
c
u
t
o
r
s
2(OffsetManager.java:229) ~[classes/:?] at java.util.concurrent.Executors
2(OffsetManager.java:229) [classes/:?]atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:511) [?:1.8.0_171]
at java.util.concurrent.FutureTask.run$$
c
a
p
t
u
r
e
(
F
u
t
u
r
e
T
a
s
k
.
j
a
v
a
:
266
)
[
?
:
1.8.
0
1
71
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
F
u
t
u
r
e
T
a
s
k
.
r
u
n
(
F
u
t
u
r
e
T
a
s
k
.
j
a
v
a
)
[
?
:
1.8.
0
1
71
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
r
u
n
W
o
r
k
e
r
(
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
j
a
v
a
:
1149
)
[
?
:
1.8.
0
1
71
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
capture(FutureTask.java:266) [?:1.8.0_171] at java.util.concurrent.FutureTask.run(FutureTask.java) [?:1.8.0_171] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171] at java.util.concurrent.ThreadPoolExecutor
capture(FutureTask.java:266)[?:1.8.0171]atjava.util.concurrent.FutureTask.run(FutureTask.java)[?:1.8.0171]atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[?:1.8.0171]atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
这个报错是因为上报的时候 消费者已经关闭了。
这个出现的情况要分析,当消费者关闭的时候,是无法上报的,这个时候就不要上报。
rocketmq-console 启动命令
java -jar rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876 --server.port=8181