我尝试在Java应用程序中设置Apache Camel路由,其中使用者端点是一个restlet组件,它将HTTP文件上载作为多部分表单数据的POST处理,然后生产者端点将请求转发给休息服务,也接受多部分表单数据。我是Camel的新手,并且无法弄清楚如何正确连接它。以下是我的路线到目前为止的情况。我是否需要对正文进行任何转换,或者多部分表单数据是否按原样转发?有人可以为我提供正确的方法指导或指出正确的文档吗?
<route id="createentityattachment">
<from uri="restlet:/EntityAttachments?restletMethod=POST&restletBinding=#queryStringToHeadersRestletBinding"/>
<camel:recipientList>
<camel:simple>
${header.apigateway}/entityattachments/1.0.0.0/api/v1/EntityAttachments
</camel:simple>
</camel:recipientList>
</route>
答案 0 :(得分:0)
我能够使用以下路由定义来实现此功能。请注意路由上的streamCache="true"
属性。要在Exchange中正确处理InputStream,需要此设置。有关详细信息,请参阅Camel docs。
<route id="createentityattachment" streamCache="true">
<from uri="restlet:/EntityAttachments?restletMethod=POST&restletBinding=#queryStringToHeadersRestletBinding"/>
<removeHeaders excludePattern="X-eviCore-EntityAttachments*" pattern="^(Camel|Backbase|User-|Accept|Cache|Cookie|breadcrumbId|Host|Connection|DNT|Upgrade-Insecure-Requests|org.restlet.startTime).*$"/>
<setHeader headerName="CamelHttpMethod">
<constant>POST</constant>
</setHeader>
<to uri="http4://api.innovate.lan:8280/entityattachments/1.0.0.0/api/v1/EntityAttachments"/>
</route>