Верблюжий путь от 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