Тело HTTP-ответа Camel пустое, хотя тело обмена имеет полезную нагрузку

apache-camel

743 просмотра

2 ответа

21 Репутация автора

rest("/getOptChoice").
        get("/v1")
        .consumes("application/json")
        .to("direct:hello")
        .produces("application/json");

from("direct:hello")
        .split(header("emails"))
        .to("seda:consumeGuestChoice")
        .aggregate(constant(true),new OptAggregator())
        .completionSize(2)
        .marshal(jaxb)
        .convertBodyTo(String.class);

После преобразования тела, если я распечатаю тело обмена, я вижу полезную нагрузку. Но HTTP-ответ от остальной службы всегда пуст.

Кто-нибудь сталкивался с этой проблемой раньше? Если так, есть ли обходной путь?

Автор: Karthik Источник Размещён: 18.07.2016 07:21

Ответы (2)


1 плюс

616 Репутация автора

Возможно, вам потребуется включить потоковое кэширование на вашем маршруте: http://camel.apache.org/stream-caching.html

Это позволяет телу быть прочитанным несколько раз для этих потоковых компонентов.

from("direct:hello")
    .streamCaching()
    .split(header("emails"))
    .to("seda:consumeGuestChoice")
    .aggregate(constant(true),new OptAggregator())
    .completionSize(2)
    .marshal(jaxb)
    .convertBodyTo(String.class);
Автор: grinch Размещён: 20.09.2016 03:35

0 плюса

2095 Репутация автора

Если вы напишите:

from("direct:hello")
    .split(header("emails"), new OptAggregator())
        .to("seda:consumeGuestChoice")
        .end()
    .marshal(jaxb)
    .convertBodyTo(String.class);

Это может сработать. Это ?

Автор: Karbos 538 Размещён: 03.02.2017 04:13
Вопросы из категории :
32x32