WSO2流处理器:无法解析json消息

时间:2019-10-20 21:22:00

标签: wso2 wso2carbon siddhi wso2sp

我正在使用流处理器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
}

已成功转移到接收器主题。

现在,在实际的消息提要中和由模拟器生成的消息有所不同。它在消息中具有事件对象,这就是为什么编辑者理解这一点并使其他消息(没有事件对象)变为无效的原因。 流处理器有没有办法处理没有事件的提要,又如何检查沉没的消息没有事件?

1 个答案:

答案 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")))