Camel-轮询rest端点并拆分JSON列表



所以我有一个驻留在https://foo.bar/api返回空的json列表CCD_ 1或包含1个或多个项目的列表:

[
{
"@class": "foo.bar.java.MyObject",
"name": "Joe Bloggs"
},
{
"@class": "foo.bar.java.MyObject",
"name": "Fred Flinstone"
}
]

现在,我正试图让camel从我的端点接收这些数据,并将列表中的每个对象交给一个处理器。我试过以下几种:

fromF("timer://foo-poll?fixedRate=true&delay=5s&period=%d&bridgeErrorHandler=true", pollRate)
.toF("https4://%s/%s", host, requestPath)
.log("Received: ${body}")
.split()
.jsonpath("$")
.log("Split: ${body}")
.process(barProccessor);

以及使用.unmarshal(new ListJacksonDataFormat(MyObject.class)).unmarshal().json(JsonLibrary.Jackson, List.class)对数据进行解组的各种尝试什么都不起作用。

使用上面较大的代码块,既没有错误,也没有"拆分:${body}"日志消息打印机。

无论从API返回多少项,使用上述任一方法的解组都会抛出此问题:

com.fasterxml.jackson.databind.exc.MismatchedInputException:否由于输入结束而要映射的内容

当有时

好吧,如果其他人也面临类似的问题,我设法弄清楚了。工作路线建设者:

fromF("timer://foo-poll?fixedRate=true&delay=5s&period=%d&bridgeErrorHandler=true", pollRate)
.toF("https4://%s/%s", host, requestPath)
.log("Received: ${body}")
.streamCaching("true")
.unmarshal(new ListJacksonDataFormat(MyObject.class))
.split()
.jsonpath("$")
.log("Split: ${body}")
.process(barProccessor);

我已经启用了流缓存,并使用Jackson对列表进行了解组。

相关内容

  • 没有找到相关文章

最新更新