我正在使用流处理器4.3.0 我创建了一个siddhi应用,其源为mqtt,消息类型为json
以及在接收器中,我也在使用mqtt和message作为json。基本上,不需要转换消息。
源mqtt主题消息中的内容采用以下方式
{
"value1" : 59.698437,
"value2" : 14.977777,
"valid" : true
}
最好将其发送到接收器mqtt代理主题。
现在,要对此进行测试,我正在/ editor中使用事件模拟器来测试sidhi应用程序。输入哑数值后,生成的提要为
{
"event" : {
"value1" : "59.698437",
"value2" : "14.977777",
"valid" : true
}
已成功转移到接收器主题。
现在,在实际的消息提要中和由模拟器生成的消息有所不同。它在消息中具有事件对象,这就是为什么编辑者理解这一点并使其他消息(没有事件对象)变为无效的原因。 流处理器有没有办法处理没有事件的提要,又如何检查沉没的消息没有事件?
答案 0 :(得分:0)
您必须在JSON映射器类型中使用自定义映射来解析所需的JSON输入
@source(type='mqtt',
@map(type='json', enclosing.element="$", @attributes(value1 = "value1", value2 = "value2", isValid = "valid")))
define stream InputStream(value1 string, value2 string, isValid bool);
有关更多信息,请参见API文档下的示例https://siddhi-io.github.io/siddhi-map-json/api/4.1.1/#json-source-mapper
您可以使用日志接收器类型来检查已发布的事件。确保使用相同的地图配置,
@sink(type='log',
@map(type='json', enclosing.element="$", @attributes(value1 = "value1", value2 = "value2", isValid = "valid")))