有人为此准备了一些样品吗?在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) )