2017-02-14 7 views
0

Я пытаюсь использовать приложение Splitter для разделения массива JSON, например. [{...}, {...}] в несколько сообщений {...} {...}. При входе CONTENTTYPE = приложения/JSON (согласно документации) Spring Облако всплывать исключение из Джексон:Разделитель потока данных Spring Cloud с массивом JSON

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token at [Source: [[email protected]; line: 1, column: 1] 

Юнит-тесты показали, у меня есть правильный шаблон для разделения работы:

splitter.expression=#jsonPath(payload,'$.[*]') 

Это работал на меня весной XD 1.3. Как настроить Spring Cloud (или Splitter) для обработки этого случая? Ввод и вывод - это строки Кафки (без заголовков).

+0

Я также могу добавить, что использование input.contentType = text/plain производит это несколько загадочное исключение: Исключение выбрано при отправке сообщения с ключом = 'null' и payload = '{- 1, 5, 13, 99, 111, 114, 114, 101, 108, 97, 116, 105, 111, 110, 73, 100, 0, 0, 0, 38, 34, 102, 55, ... ' –

+0

Вы уверены, что используете поток потока данных в этом случае? или, вы имеете в виду только приложение Spring Cloud stream, которое получает данные из темы кафки? –

ответ

0

Если сообщения сплиттера поступают из приложений, отличных от Spring Cloud Stream, тогда вам нужно будет установить --spring.cloud.stream.bindings.<inputChannelName>.consumer.headerMode=raw. В то время как сообщения application/json contentType имеют исключение jackson, это, по крайней мере, должно получило бы сообщения text/plain contentType, оцененные соответствующим выражением.

+0

На отправке я теперь получаю 'не удалось отправить сообщение на канал 'output'; Вложенное исключение - это java.lang.IllegalArgumentException: полезная нагрузка не должна быть нулевой. Я включил журналы отладки, определенно что-то в полезной нагрузке: –

+0

'DEBUG 1311 --- [afka-listener-1] osintegration.channel.DirectChannel: preSend на канале 'output', message: GenericMessage [payload = { «some»: «data»}, headers = {sequenceNumber = 1, kafka_offset = 2663, sequenceSize = 1, correId = f9c64983-5908-af0c-3b2c-bb9c4bb03e86, id = 07 3d1d21-8474-bdf0-46c8-e4a71e2117b2, kafka_receivedPartitionId = 0, kafka_receivedTopic = MyTopic, contentType = te xt/plain, timestamp = 1487206118408}] ' –

+0

Могу ли я увидеть эту проблему? http://stackoverflow.com/questions/41781351/spring-cloud-dataflow-type-conversion-not-working-in-processor-component –

 Смежные вопросы

  • Нет связанных вопросов^_^