骆驼 restlet 在 POST 而不是 return 主体之后终止
Camel restlet terminate after POST rather than return body
我正在使用蓝图开发一个 camel restlet 项目以部署在 Fuse 上。这是一个非常简单的 HTTP POST,带有简单的文本正文。我将交换模式设置为 Inonly
.
但是,我原以为连接会在实际 post 之后终止,但我收到了一个 200 OK,正文中填充了最后正在处理的任何最终正文。
这就是它的工作方式吗?因此,我需要手动清除主体吗?
此外,如果处理过程很长 运行 会怎样?我想在数据被 posted 后立即终止,而不是等到上下文中的完整处理。
我的蓝图是这样的:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&exchangePattern=inOnly"/>
<process ref="marcformatreader"/>
<log message="${body}" loggingLevel="INFO"/>
<process ref="marcformatwriter"/>
<log message="${body}" loggingLevel="INFO"/>
<to pattern="InOnly" uri="file:C:/Camel/output?fileName=output.mrc"/>
</route>
</camelContext>
一个解决方案是像这样立即使用 WireTap pattern 和 return 响应(注意!我没有执行该代码,所以请注意可能出现的拼写错误)。
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&exchangePattern=inOnly"/>
<wireTap uri="direct:tap" copy="true"></wireTap>
<transform>
<constant>OK</constant>
</transform>
</route>
<route id="wireTapToLog">
<from uri="direct:tap"/>
<process ref="marcformatreader"/>
<log message="${body}" loggingLevel="INFO"/>
<process ref="marcformatwriter"/>
<log message="${body}" loggingLevel="INFO"/>
<to pattern="InOnly" uri="file:C:/Camel/output?fileName=output.mrc"/>
</route>
</camelContext>
使用 WireTap Camel 将继续在另一个线程中处理交换,因此 POST 方法将 return 立即只是文本 "OK"。
我正在使用蓝图开发一个 camel restlet 项目以部署在 Fuse 上。这是一个非常简单的 HTTP POST,带有简单的文本正文。我将交换模式设置为 Inonly
.
但是,我原以为连接会在实际 post 之后终止,但我收到了一个 200 OK,正文中填充了最后正在处理的任何最终正文。
这就是它的工作方式吗?因此,我需要手动清除主体吗?
此外,如果处理过程很长 运行 会怎样?我想在数据被 posted 后立即终止,而不是等到上下文中的完整处理。
我的蓝图是这样的:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&exchangePattern=inOnly"/>
<process ref="marcformatreader"/>
<log message="${body}" loggingLevel="INFO"/>
<process ref="marcformatwriter"/>
<log message="${body}" loggingLevel="INFO"/>
<to pattern="InOnly" uri="file:C:/Camel/output?fileName=output.mrc"/>
</route>
</camelContext>
一个解决方案是像这样立即使用 WireTap pattern 和 return 响应(注意!我没有执行该代码,所以请注意可能出现的拼写错误)。
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&exchangePattern=inOnly"/>
<wireTap uri="direct:tap" copy="true"></wireTap>
<transform>
<constant>OK</constant>
</transform>
</route>
<route id="wireTapToLog">
<from uri="direct:tap"/>
<process ref="marcformatreader"/>
<log message="${body}" loggingLevel="INFO"/>
<process ref="marcformatwriter"/>
<log message="${body}" loggingLevel="INFO"/>
<to pattern="InOnly" uri="file:C:/Camel/output?fileName=output.mrc"/>
</route>
</camelContext>
使用 WireTap Camel 将继续在另一个线程中处理交换,因此 POST 方法将 return 立即只是文本 "OK"。