WSO2 Stream Processor: невозможно проанализировать сообщения json - PullRequest
0 голосов
/ 21 октября 2019

Я использую потоковый процессор 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 голосов
/ 21 октября 2019

Вы должны использовать настраиваемое отображение в типе отображения 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")))

...