尽管交换主体具有有效负载,但Camel HTTP响应主体是空的

时间:2016-07-18 19:21:40

标签: apache-camel

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响应始终为空。

之前有人遇到过这个问题吗?如果是这样,是否有解决方法?

2 个答案:

答案 0 :(得分:1)

您可能需要在路线中启用流缓存: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);

答案 1 :(得分:0)

如果你写:

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

它可能有用。是吗?