Отправка ответа с использованием Camel Netty4 - не удалось вызвать операцию HTTP - PullRequest
1 голос
/ 26 июня 2019

Я новичок в Camel и пытаюсь получить ответ от маршрута Netty4, используя запрос POST.Я хотел бы отправить JSON и вернуть строку, извлеченную из тела.

Мои настройки для отдыха следующие:

public class Server extends RouteBuilder {

    @Override
    public void configure() {

        String listenAddress = "0.0.0.0";
        int listenPort = 8080;

        restConfiguration()
                .component("netty4-http")
                .scheme("http")
                .host(listenAddress)
                .dataFormatProperty("prettyPrint", "true")
                .bindingMode(RestBindingMode.auto)
                .port(listenPort);

        rest("/")
                .post()
                .consumes("application/json; charset=UTF-8")
                .to("direct:post");
    }
}

В рамках моего маршрута на верблюде я хотел бы отправитьобратно сообщение, используя:


@Component
public class RestRoute extends RouteBuilder {

    @Autowired
    CamelContext context;

    @Override
    public void configure() {

        from("direct:post")
                .log("New Request")
                .streamCaching()

                .setHeader(Exchange.HTTP_METHOD,constant(org.apache.camel.component.http4.HttpMethods.POST))
                .setBody().jsonpath("$.Text") // extract text from JSON
                .to("http4://0.0.0.0:8080?bridgeEndpoint=true");

Однако я получаю следующую ошибку: org.apache.camel.http.common.HttpOperationFailedException: HTTP operation failed invoking http://0.0.0.0:8080 with statusCode: 500

Буду признателен за некоторую помощь!

1 Ответ

2 голосов
/ 27 июня 2019

О, вы не должны отправлять сообщение обратно, это происходит автоматически, когда заканчивается маршрутизация, тогда сообщение в этой точке используется как ответное сообщение для остальных.

Поэтому удалите

.to("http4://0.0.0.0:8080?bridgeEndpoint=true");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...