Как прочитать файл и отправить в виде потока на другую конечную точку
Мне нужно прочитать файл, используя Apache Camel и отправить в другую конечную точку в виде потока.
public class SimpleRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file:C:/inputFolder?noop=true").to("streamEndPoint");
}
}
1 ответ
Вот несколько простых рабочих примеров маршрутов из (file).to(rest-service)
//receiver
from("jetty://http://0.0.0.0:5514/path/getFile")
.process(exchange -> {
if (exchange.getIn().getAttachments() != null) {
for (String key : exchange.getIn().getAttachments().keySet()) {
DataHandler dataHandler = exchange.getIn().getAttachments().get(key);
System.out.println(String.format("Receive attachment:%s size:%s", dataHandler.getName(), dataHandler.getInputStream().available()));
}
}
});
//sender
from("file:/Users/user1/test/?delete=true&delay=5000")
.process(exchange -> {
GenericFile<File> body = exchange.getIn().getBody(GenericFile.class);
exchange.getIn().setHeader("Content-Type", MediaType.MULTIPART_FORM_DATA);
exchange.getIn().setHeader("CamelHttpMethod", "POST");
exchange.getIn().setBody(MultipartEntityBuilder.create()
.addPart(body.getFileName(), new FileBody(body.getFile(), ContentType.MULTIPART_FORM_DATA, body.getFileName()))
.build()
);
})
.to("http4://0.0.0.0:5514/path/getFile?synchronous=true")//camel-http4 component for sending to our rest service
;
Вот целый пример, который вы можете запустить и посмотреть, как он работает.