Полезная нагрузка аргумента Spring Cloud Consumer всегда получает объект байтового массива - PullRequest
0 голосов
/ 31 октября 2018

Я использую Spring Cloud Edgware. Выпуск SR3 и Spring Cloud Stream 2.0.1.

Я создал приложение testprocessor, используя Spring Cloud Stream 2.0. Создан образец потока:

stream create TEST1 --definition "http --server.port=8888 | testprocessor | uploader --spring.cloud.stream.bindings.input.contentType='text/plain1' "

Развернутый в Spring облачный локальный сервер.

//testprocessor apps method signature is
@StreamListener(Processor.INPUT)
@sendto(Processor.OUTPUT)
public String transform(Object payload) {

}

В application.properties этого приложения я настроил свойства ниже spring.cloud.stream.bindings.input.content-type=application/json;

Пример входных данных:

http post --contentType 'application/json' --data '{\"isbn\": \"1599869772", "title": "The Art of War", "author": "Sun Tzu"}' --target http://localhost:8888

Когда я публикую выше пример данных, я всегда получаю полезную нагрузку объекта byte[] объект, подобный [B@5b2ff6e7, но не получаю фактическую строку JSON. Пожалуйста, можете ли вы помочь в этом вопросе?

Примечание. Если я создаю одно и то же приложение testprocessor, используя версию Spring Cloud Stream 1.3.1. Работает нормально. Я получаю строку JSON. Почему это не работает с использованием Spring Cloud Stream 2.0.1

1 Ответ

0 голосов
/ 31 октября 2018

Приложение transformer имеет опцию expression, поэтому вы можете сделать так:

--expression='new String(payload)'

И вы получите строку JSON в методе public String transform(Object payload).

Соответствующая проблема GH: https://github.com/spring-cloud-stream-app-starters/transform/issues/6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...