WSO2 流处理器:无法解析 json 消息
WSO2 Stream Processor: unable to parse json messages
我正在使用流处理器 4.3.0
我创建了一个 siddhi 应用程序,其源为 mqtt,消息类型为 json
并且在接收器中我也使用 mqtt 和消息作为 json。基本上不需要message的转换。
源mqtt主题消息按以下方式
{
"value1" : 59.698437,
"value2" : 14.977777,
"valid" : true
}
理想情况下应该将其发送到接收器 mqtt 代理主题。
现在,为了对此进行测试,我在 /editor 中使用事件模拟器来测试 sidhi 应用程序。输入虚拟值后,生成提要为
{
"event" : {
"value1" : "59.698437",
"value2" : "14.977777",
"valid" : true
}
成功转移到sink主题
现在,实际的消息提要和模拟器生成的有区别。它在消息中有事件对象,这就是为什么编辑器理解这一点并使其他消息(没有事件对象)无效的原因。
有没有什么办法,流处理器也可以处理没有事件的提要,如何检查接收的消息没有事件?
您必须在 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")))
我正在使用流处理器 4.3.0 我创建了一个 siddhi 应用程序,其源为 mqtt,消息类型为 json
并且在接收器中我也使用 mqtt 和消息作为 json。基本上不需要message的转换。
源mqtt主题消息按以下方式
{
"value1" : 59.698437,
"value2" : 14.977777,
"valid" : true
}
理想情况下应该将其发送到接收器 mqtt 代理主题。
现在,为了对此进行测试,我在 /editor 中使用事件模拟器来测试 sidhi 应用程序。输入虚拟值后,生成提要为
{
"event" : {
"value1" : "59.698437",
"value2" : "14.977777",
"valid" : true
}
成功转移到sink主题
现在,实际的消息提要和模拟器生成的有区别。它在消息中有事件对象,这就是为什么编辑器理解这一点并使其他消息(没有事件对象)无效的原因。 有没有什么办法,流处理器也可以处理没有事件的提要,如何检查接收的消息没有事件?
您必须在 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")))