Spring XD: источник tcp выводит массив байтов вместо строки? Как вывести обычный текст?

Цель состоит в том, чтобы прочитать данные, передаваемые по сети.

Что касается генерации данных, у меня есть приложение, которое выводит на стандартный вывод. Содержимое этих данных представляет собой строку JSON.

Вот что я делаю (в Linux Mint 17, используя netcat со вкусом BSD):

генерация данных:

my_app_which_outputs_json | netcat localhost 9999

В SpringXD:xd-singlenode)

xd:>stream create --name tcptest --definition "tcp --decoder=LF --port=9999 | file " --deploy
Created and deployed new stream 'tcptest'

Вывод:

/tmp/xd/output$ cat tcptest.out 
82,117,110, ...  (etc, lots more bytes)

Я уверен, что это ошибка пользователя, но не уверен, что нужно изменить, чтобы все исправить.

Я должен отметить, что если я это сделаю, он будет работать так, как ожидалось:

my_app_which_outputs_json > /tmp/somefile.txt
...
xd:>stream create --name filetest --definition "tail --name=/tmp/somefile.txt | file" --deploy

person Michael Campbell    schedule 15.12.2014    source источник


Ответы (3)


Следуя вашему собственному ответу, преобразователи в настоящее время не настроены, чтобы понять, что byte[] можно преобразовать в строку с типом контента application/json.

Конечно, даже если бы мы настроили его для этого, он не смог бы определить, действительно ли контент является JSON.

person Gary Russell    schedule 15.12.2014

Я добавил следующее в свой поток defn, и теперь он делает то, что я ожидал. Я нашел это в разделе документации «Преобразование типов».

stream create --name tcptest \
    --definition "tcp --decoder=LF --port=9999 --outputType=text/plain \
    | file " --deploy

(Новые строки и обратные удары отсутствуют в моем реальном коде, но используются для удобства чтения.)

Я также пробовал ... --outputType=application/json..., но это не сработало. Не совсем уверен, почему.

person Michael Campbell    schedule 15.12.2014

text/plain с полезной нагрузкой byte[] активирует ByteArrayToStringMessageConverter. application/json в настоящее время нет. Я создал https://jira.spring.io/browse/XD-2512 для обратиться к этому

person dturanski    schedule 16.12.2014