一、AMQP 消息队列
如何查看消息是否堆积以及是否有消费者线程?
关注点:
- 【流入】与【流出】速率相差太大,可能是pod消费能力不足
-
【上次消费时间】距现在太久,查看consumer消费者线程是否存在
AMQP常见异常
1.Exchange 类型不匹配
[AMQP Connection 100.103.1.27:5672]
[o.s.a.r.c.CachingConnectionFactory] [ERROR] [1349] - Channel shutdown:
channel error; protocol method:
#method<channel.close>(reply-code=503,
reply-text=ExchangeTypeNotSupport[], ReqId:609A1AD133434521449E9A3B,
ErrorHelp[exchange=test2, [https://c.tb.cn/F3.Zro5uI],](https://c.tb.cn/F3.Zro5uI],) class-id=40,
method-id=10)
说明:同一个exchange 名称,但是类型由fanout被变更为topic等。
解决方案:
- 删除服务器上的exchange,重启应用
- 修改应用中的exchange ,重启应用
2.Exchange 名称不合法
[AMQP Connection 100.103.1.27:5672]
[o.s.a.r.c.CachingConnectionFactory] [ERROR] [1349] - Channel shutdown:
channel error; protocol method:
#method<channel.close>(reply-code=406,
reply-text=ExchangeNameInvalid[exchange_name test1],
ReqId:609A1ACE33434521449E88B7, ErrorHelp[exchange=exchange_name test1,
[https://c.tb.cn/F3.Zro5uI],](https://c.tb.cn/F3.Zro5uI],) class-id=40, method-id=10)
解决方案:
- Exchange名称只能包含字母、数字、短划线(-)、下划线(_)、英文句号(.)、at符号(@),长度限制1~255字符。
- Exchange创建后,名称不支持修改,只能删除后重建。
3.如何解决消息堆积问题?
- 增加pod数。
- 增加应用concurrency="3"数
4.消息发送失败
- Exchange未绑定queue
解决方案:要么停止发送消息,要么至少绑定一个Queue。 - TPS限流,消息无法发送到exchage
解决方案:联系阿里云排查或升级配置
5.请求过多
[AMQP Connection 100.103.1.27:5672]
[o.s.a.r.c.CachingConnectionFactory] [ERROR] [1349] - Channel shutdown:
channel error; protocol method:
#method<channel.close>(reply-code=530, reply-text=denied for too
many requests,
ErrorHelp[exchange=clientobserver.exchange.client.background,
[https://c.tb.cn/F3.Zro5uI],](https://c.tb.cn/F3.Zro5uI],) class-id=40, method-id=10)
解决方案:以上异常说明请求被限流,需要调整提升tps上线。
总结:类似以上的异常,只要关注reply-text的内容即可,很多异常原因表达都很明确,如果有不明确的新的异常产生,直接在群里咨询阿里云的技术人员即可。
二、RocketMQ 消息队列
常见问题
-
查看RocketMQ的消息堆积情况
一般主要指某个topic对应的group 消费情况
解决方案:如果消费者不在线需要立即让消费者应用修复,如果是消费速度比较慢的话,需要增加消费者应用POD数量。
2.如何根据topic查看统计信息
3.如何根据group查看统计信息