Как прочитать файл и отправить его в виде потока на другую конечную точку

Мне нужно прочитать файл с помощью apache camel и отправить его на другую конечную точку в виде потока.

public class SimpleRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("file:C:/inputFolder?noop=true").to("streamEndPoint");
    }

}

person rocky    schedule 24.01.2019    source источник
comment
Сможете ли вы наконец ответить, что нужно делать с данными из потребляемого файла? Какой у вас эндпонит абстрактного потока? Это верблюжий поток? На многие из вас были даны ответы, но вы продолжаете задавать вопросы, похожие друг на друга.   -  person c0ld    schedule 24.01.2019
comment
streamEndpoint - это что-то вроде сервиса отдыха. from (файл: C: / inputFolder? noop = true) .to (процессор) .to (streamEndPoint);   -  person rocky    schedule 24.01.2019
comment
Ок, так что перестань называть его streamendpoint =) Вам нужен пример использования файла и его отправки в качестве присоединения к сервису rest, не так ли? Чуть позже попробую привести рабочий пример.   -  person c0ld    schedule 24.01.2019


Ответы (1)


Вот простой рабочий пример маршрутов из (файла) в (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

    ;

Вот целый пример, который вы можете запустить и посмотреть, как он работает.

person c0ld    schedule 24.01.2019