休息骆驼在端点之间传递对象

时间:2017-07-26 10:04:18

标签: spring apache-camel message-queue

概述即可。
我的骆驼设置调用了两种服务方法。第一个的响应传递到第二个响应,然后输出最终响应作为json网页。相当简单没有太复杂。

进一步细分以提供更多背景信息。 Method_1。接受scanId。这没问题。它生成一个名为ScheduledScan .class的对象 Method_2。获取ScheduledScan .class的对象先前实例,并返回ConvertedScans扫描列表。然后想显示所说的列表

代码说明

@Override
public void configure() throws Exception {

    restConfiguration().bindingMode(RestBindingMode.json);

    rest("/publish")
       .get("/scheduled-scan/{scanId}")
       .to("bean:SentinelImportService?method=getScheduledScan").outType(ScheduledScan .class)
       .to("bean:SentinelImportService?method=convertScheduledScan");
}

调用的方法如下所示

ScheduledScan  getScheduledScan(@Header("scanId") long scanId);
List<ConvertedScans >  convertScheduledScan(@Body ScheduledScan  scheduledScans);

它返回以下错误

没有可用的类型:路径。 .ScheduledScan但有价值:
类型:java.lang.String on:HttpMessage @ 0x63c2fd04。引起:没有可用的类型转换器

以下运行没有错误,即没有方法2.所以我认为即将到来。

rest("/publish")
.get("/scheduled-scan/{scanId}")
.to("bean:SentinelImportService?method=getScheduledScan");

现在从阅读错误看起来像是在传递HttpMessage而不是java对象?我对下一步做什么感到有点困惑?任何建议都非常感激。

我在这条消息中发现了一些类似的问题。但是我希望将java对象直接传递给服务方法。

camel-rest-bean-chaining

how-to-share-an-object-between-methods-on-different-camel-routes

1 个答案:

答案 0 :(得分:1)

您应该将outType设置为最后一个输出,例如REST响应是什么,即List / Array而不是单个pojo。所以请改用.outTypeList(ConvertedScans.class)