插件的delivered是否支持创建新的消息


在文档上显示支持新消息,在proto上面返回的并没有

ExHook 暂不支持
https://github.com/emqx/emqx/blob/v5.3.2/apps/emqx_exhook/priv/protos/exhook.proto#L244-L251

rebar3 emqx-plugin 模板
是否支持呢?或者有没有其他方式达到这种目的的

用 erlang plugin 是支持的。

没有写过erlang plugin,也不会erlang语言,想达到这个功能还有没有更简单的方式

达到这个功能指 “创建新的消息”?
能详细描述下场景和功能需求么?

默认情况下,客户端接收到消息的时候,是拿不到username字段的,怎么让客户端接收消息的时候也能拿到这个username

订阅者接收消息的时候,拿到发布者的 username?
这个可以通过主题设计来实现的

发布者发布的消息为 sennor/${usernam}/report,每个客户端在发布消息时用自己的 username 替换 ${usernam} 进行发布。例如username 为 zhang_san 的客户端发布时,发布的主题为 sensor/zhang_san/report

订阅者订阅 sensor/+/report
订阅者直接解析收到消息的主题就能拿到发布者的信息

另外,如果想用 ExHook 实现这个功能,需要在rpc 请求 onMessagePublish 上更作改,返回修改过的消息。而不是 onMessageDelivered 请求。

非常官谢官方,这个方法确实可行