Верблюжий путь от ByteArrayInputStream

Согласно документам Camel Stream, возможно направлять сообщения в / из различных потоков данных.

Однако в моем случае мне нужны данные (byte[]) в ByteArrayInputStream отправиться на верблюжий маршрут. Проблема в том, что единственный InputStream этот компонент, кажется, поддерживает FileInputStream вот так:

from("stream:file?fileName=/server/logs/server.log&scanStream=true&scanStreamDelay=1000").to("bean:logService?method=parseLogLine");

Но похоже, что единственный способ указать ByteArrayInputStream это использовать stream:header URI вроде так:

ByteArrayInputStream byteStream = new ByteArrayInputStream(someData);
from("direct:a").setHeader("stream", constant(byteStream)).to("stream:header");

Но если вам нужно указать пользовательский поток в качестве заголовка, я не вижу, как вы могли бы сделать это внутри from() пункт. Есть идеи, как это сделать?

1 ответ

Решение

stream:file для чтения файлов в виде потока. Вы не можете отправить объект Java в эту конечную точку. Он читает только из файлов из вашей файловой системы.

Вы можете использовать конвертер типов Camel для преобразования полезной нагрузки во что-то другое, например byte[]

from("stream:file:...")
  .convertBodyTo(byte[].class)
  ...

Вы можете прочитать о конвертере типов Camel здесь: http://camel.apache.org/type-converter.html

Другие вопросы по тегам