为什么我不能从mosquitto代理接收ACL文件中特定用户的消息?

时间:2019-03-17 04:11:06

标签: mqtt mosquitto

我很难弄清楚为什么我可以与一个用户一起订阅所有主题,而不能与另一个用户一起订阅。我在不同的时间点设置它们,也许我忘记了原始用户的操作。

Mosquitto经纪人v1.5.5

acl_file包含

user foo
topic readwrite #

user bar
topic readwrite #

当我与用户 foo 建立联系并订阅'#'时,我会从发布测试中获取所有消息。

当我与用户 bar 建立联系并订阅'#'时,发布测试没有任何消息。

当我尝试为用户 bar 使用错误的用户名/密码连接时,出现了预期的错误。 Mosquitto的日志清楚地显示了酒吧成功连接。

连接了用户 foo 并发布了一条消息后,蚊帐日志中依次显示:Received PUBLISH,然后依次显示Sending PUBACKSending PUBLISH

连接了用户 bar 并发布了一条消息时,蚊帐日志中依次显示Received PUBLISHSending PUBACK,但不显示Sending PUBLISH

当我将ACL文件中的条目反转为

时,
user bar
topic readwrite #

user foo
topic readwrite #

两个用户均未收到Sending PUBLISH消息。我希望其他人可以找到问题的根源,谢谢。

1 个答案:

答案 0 :(得分:0)

在搜索蚊子变更日志时,我想到了一些空白可能是原因。我再次检查了acl文件,发现一个空格是问题的根源:

对于冒犯的用户,我在#通配符topic readwrite #后面有一个空格

现在用户 foo 正在接收消息