Camel REST DSL - преждевременный конец тела сообщения с разделением по длине - PullRequest
0 голосов
/ 10 декабря 2018

Я использую Camel Rest DSL для создания конечных точек для использования в качестве прокси между различными сетями.

Я создал 2 конечные точки.Ниже кода:

Первый:

restConfiguration().host("localhost").component("undertow").bindingMode(RestBindingMode.off);
    rest("/endpoint?{1param}&{2param}")
    .get("/")
        .route().routeId("Ednpoint1")
            .autoStartup(true)
            .setProperty("uri", simple("http4://0.0.0.0:8080/endpoint?1param=${header.1param}&2param=${header.2param}"))
            .setHeader(Exchange.HTTP_METHOD, constant("GET"))
            .removeHeaders("CamelHttp*")
       .toD("${header.uri}").endRest().responseMessage().message("${body}");

Второй:

restConfiguration().host("localhost").component("undertow").bindingMode(RestBindingMode.off);
        rest("/endpoint?{param1}&{param2}")
        .get("/")
            .route().routeId("Endpoint2")
                .autoStartup(true)
                .setProperty("uri", simple("http4://endpoint-destionation/service?dhi=${header.param1}&dhf=${header.param2}"))
                .setHeader(Exchange.HTTP_METHOD, constant("GET"))
                .removeHeaders("*")
           .toD("${header.uri}").endRest().responseMessage().message("${body}");

В настоящее время я получаю следующую ошибку:

org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 146541; received: 54482
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:150)
at org.apache.camel.util.IOHelper.copy(IOHelper.java:219)
at org.apache.camel.util.IOHelper.copy(IOHelper.java:174)
at org.apache.camel.util.IOHelper.copy(IOHelper.java:170)
at org.apache.camel.component.http4.HttpProducer.doExtractResponseBodyAsStream(HttpProducer.java:414)
at org.apache.camel.component.http4.HttpProducer.extractResponseBody(HttpProducer.java:397)
at org.apache.camel.component.http4.HttpProducer.populateResponse(HttpProducer.java:242)
at org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:203)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at org.apache.camel.processor.SendDynamicProcessor$1.doInAsyncProducer(SendDynamicProcessor.java:178)
at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:445)
at org.apache.camel.processor.SendDynamicProcessor.process(SendDynamicProcessor.java:160)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
at org.apache.camel.component.undertow.UndertowConsumer.handleRequest(UndertowConsumer.java:126)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)

Есть ли способ обойти эту проблему с верблюдом?Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019

Нашел проблему.В моем случае я использую Wildfly 13 для развертывания моих верблюжьих маршрутов.Проблема с полем Send Buffer внутри компонента HTTP Listener Undertow.

Configuration⇒Subsystems⇒Web (Undertow)⇒Server ⇒default-server 
Listener⇒HTTP Listener

Я изменил значение на 10000000 (КБ), и теперь работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...