错误报告
环境
- EMQX 版本:EMQX开源版5.0.9
- 操作系统版本:ubuntu 20.04
功能请求
使用grpc挂载钩子,仅对onMessagePublish事件消息进行数据处理,再通过规则引擎转发消息。
预期行为
往testtopic/1发送一条消息{"msg":"world"},订阅了testtopic/#收到grpc处理后的消息{"msg":"hello"},规则引擎对处理后的消息进行处理,转发到change/2
实际情况
向testtopic/1发送{"msg":"hello"},testtopic/# 收到了信息,change/2没有收到;若直接发送{“msg”:“hello”},testtopic/# 和change/2都收到了该信息。等于说规则并没有生效。
重现此问题的步骤
-
grpc挂载onMessagePublish,将testtopic/#主题消息的payload改为{“msg”:“hello”},设置 value为CONTINUE
ValuedResponse reply = ValuedResponse.newBuilder() .setType(ValuedResponse.ResponsedType.CONTINUE) .setMessage(nmsg).build(); responseObserver.onNext(reply); responseObserver.onCompleted();
-
创建一个规则,SELECT payload FROM “testtopic/#” WHERE payload.msg = ‘hello’,并添加动作将该消息payload转发到change/2主题。
-
创建3个客户端连接到emqx broker,1个发布者往testtopic/1发布消息{“msg”:“world”},另外两个一个订阅了change/#主题,一个订阅了testtopic/#主题。
问题
请问上述哪里有问题,我该如何解决,实现这个功能?