emqx是如何知道消息是由哪个客户端ID发布或者订阅的

描述你需要的功能

我想知道发送信息的客户端ID,emqx里面有${clientid},emqx是如何知道clientid的。

为什么你需要这个功能

已连接的客户端会有 session,其中会存有 clientid username 等信息。
在客户端发布消息的时候,EMQX 可以根据当前 session 获取 clientid username ip port 等客户端连接的信息。

请问授权缓存里的缓存是缓存的授权检查的前32条还是什么?

缓存授权结果,最多 32 条

我想问的意思是客户端匹配到一条允许或是拒绝的规则放到缓存里,还是直接把把授权规则的前32条放进缓存里?如果100个客户端就是默认最大3200条吗?

是缓存一次 pub/sub 的授权结果。32 这个配置是对于每个客户端来说的,每个客户端都可以缓存 32 条授权结果。
不用担心资源消耗,这个耗费不高的,至少比每次 pub/sub 都去查一次数据库要低得多。

1 个赞