mq消费者不在线,基本原因在于网络和权限两个方面,下面分别介绍不同的定位思路。
网络排查
主要是排查部署消费者程序服务器是否可以连通接入域名,这里就涉及域名是否正确,topic区域限制等。
- topic区域限制:生产端和消费端可以部署在本地或者部署在任意地域的 ECS 上,前提是本地服务器或者相应的 ECS 需要能够访问公网。如果在非公网区域使用 MQ 服务,需要将应用程序部署在阿里云 ECS 上,同时 Topic 也需要在应用程序所在的区域(即所部署的 ECS 区域)进行创建。Topic 不能跨域使用。 比如 Topic 创建在“华北 2”这个域,那么消息生产端和消费端也必须运行在“华北 2”的 ECS 上。
- 符合topic限制,那么建议命令核实一下网络,执行如下命令,从ecs安全组以及防火墙进行核实
curl http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet
ping onsaddr-internet.aliyun.com
telnet onsaddr-internet.aliyun.com 80
备注:命令以公网接入域名举例
权限排查:
mq目前对权限加强了控制,当权限认证不通过的时候,也会出现消费者不在线。
醒目提示
authority.exception.AuthenticationException: valid resource owner failed. 查看本地日志ons.log 路径是{userhome}/logs/ons.log
- 代码中ak/sk的拥有者账号是否授权,主账号创建的topic,如果没有授权给子账号时无法通过子账号的ak/sk访问。具体授权 link
- cid和pid非代码中配置ak/sk的账号创建的,这个是最容易忽略的,一定要核实清楚。