Skip to content

RocketMQ ACL 权限控制列表消费者消费不了消息的问题解决笔记 #67

Open
@Shellbye

Description

@Shellbye

问题描述

在上一篇文章 #66 中,我记录了解决 Algorithm HmacSHA1 not available 的一种方法,解决之后就可以顺利的通过 ACL 远程生产消息,但是在消费的时候,虽然我的 accessKeysecretKey 使用的都是和生产者一样的配置,但是很奇怪的问题就是我的消费者一直拿不到任何消息。在查看了一些日志之后,最后发现在 remoting.log 中有以下报错信息

org.apache.rocketmq.acl.common.AclException: No default permission for group:ConsumerGroup001

其中的ConsumerGroup001是我使用的消费者的组名,看样子是权限有问题。

解决方案

解决放啊就是把消费者的组名配置到 plain_acl.yml 中,结合上篇文章,最终如下

globalWhiteRemoteAddresses:

accounts:
- accessKey: RocketMQ
  secretKey: 12345678
  whiteRemoteAddress:
  admin: false
  defaultTopicPerm: DENY
  defaultGroupPerm: SUB
  topicPerms:
  - topicA=DENY
  - topicB=PUB|SUB
  - topicC=SUB
  groupPerms:
  # the group should convert to retry topic
  - groupA=DENY
  - ConsumerGroup001=PUB|SUB
  - groupC=SUB

- accessKey: rocketmq2
  secretKey: 12345678
  whiteRemoteAddress: 192.168.1.*
  # if it is admin, it could access all resources
  admin: true

这就可以可以顺利消费到生产者生产的消息了。

又一个BUG?

这里有一个很奇怪的地方,生产者在生产的时候,组名是可以随意定的,只要 accessKeysecretKey 是正确的就行,但是在消费者消费的时候,却需要把组名配置好。找到了一个官方文档,似乎 Group 相关的权限确实都是给消费者定义的,没有关于生产者的。

参考资料

  1. https://itzones.cn/2019/07/18/RocketMQ%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6/

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions