环境信息
- EMQX 版本:4.4
- 操作系统及版本:CentOS 7.8
- docker部署
问题描述
我的需求是将向该主题发送的消息:
device/UXRurdw5/AFmUWsTN/D4A3qw5S
重写主题发送到:
device/UXRurdw5/D4A3qw5S
也就是忽略AFmUWsTN。
配置文件及日志
后台已经启动emqx_mod_rewrite
环境变量配置如下:
EMQX_MODULE__REWRITE__PUB__RULE__1 = "device/+/+/# ^device/(.+)/(.+)/(.+)$ device/$1/$3"
但最终没有生效,请问我的配置是否有误,亦或者有没有可以测试重写的功能组件或者相关日志追踪?
非常感谢!
推荐使用配置文件来管理,环境变量仅仅在启动的时候读一次,后面的优先级就很低了,不读取。
业务调整阶段可以使用debug级别日志来看设备的每一步业务行为走向。看下这个文档设置成debug级别日志
1 建议使用配置文件,方便后续拓展集群&迁移机器
2 我看了代码确实缺少了日志输出,我们会在后续版本中增加这一块的日志,非常不好意思。
3 可以使用命令查看配置:
./bin/emqx eval 'emqx:get_env(modules, [])'
./bin/emqx 路径要根据你的部署方式来改一下
好的,使用配置文件能正常用了。
然后我们开发多次尝试环境变量方法后,发现目标表达式使用$N
前需要加上转义符号:
XXX = "device/+/+/# ^device/(.+)/(.+)/(.+)$ device/$1/$3" (失败)
XXX = "device/+/+/# ^device/(.+)/(.+)/(.+)$ device/\$1/\$3" (成功)
1 个赞