如何使用Web服务丰富Camel消息?

时间:2016-05-22 21:55:38

标签: java apache-camel

有人为此准备了一些样品吗?在Camel路线的中间,我有一个包含对象列表的消息。对于其中一些(基于标志)我想调用一个Web服务并在列表中添加一些记录,其中一些字段是从父记录设置的,一些字段是从Web服务接收的......我试过这个:

...
.process(new MappingProcessor())
.split(body()).parallelProcessing()
.setHeader("program_id", simple("${body.programId}"))
.wireTap("direct:enrich")
...

我使用wireTap来创建一个消息副本,我希望以后聚合到结果中。然后

from("direct:enrich")
.choice()
.when(simple("${in.body.flag} == 1"))
    .marshal().json(JsonLibrary.Jackson, MyOutput.class)
    .enrich("direct:getValues", new SomeAggregationStrategy());

from("direct:getValues")
    .setHeader(Exchange.HTTP_URI, simple(apiEndpoint + "/getvalue"))
    .setHeader(Exchange.HTTP_QUERY, simple("program_id=${in.header.program_id}"))
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))
    .to("https://dummyhost")
    .marshal().json(JsonLibrary.Jackson, Result.class);

我没有事件到达我的聚合策略类,我想根据Web服务响应设置值,并收到一条消息:

com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.apache.camel.converter.stream.CachedOutputStream$WrappedInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) )

0 个答案:

没有答案