Open
Description
问题描述
在上一篇文章 #66 中,我记录了解决 Algorithm HmacSHA1 not available
的一种方法,解决之后就可以顺利的通过 ACL
远程生产消息,但是在消费的时候,虽然我的 accessKey
和 secretKey
使用的都是和生产者一样的配置,但是很奇怪的问题就是我的消费者一直拿不到任何消息。在查看了一些日志之后,最后发现在 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?
这里有一个很奇怪的地方,生产者在生产的时候,组名是可以随意定的,只要 accessKey
和 secretKey
是正确的就行,但是在消费者消费的时候,却需要把组名配置好。找到了一个官方文档,似乎 Group
相关的权限确实都是给消费者定义的,没有关于生产者的。