gpt4 book ai didi

java - Camel reSTLet 在 POST 之后终止而不是返回主体

转载 作者:行者123 更新时间:2023-11-30 10:57:20 26 4
gpt4 key购买 nike

我正在使用蓝图开发一个 camel reSTLet 项目以部署在 Fuse 上。这是一个非常简单的 HTTP POST,带有简单的文本正文。我将交换模式设置为 Inonly

但是,我原以为连接会在实际发布后终止,但我收到了一个 200 OK 的消息,消息中填满了最后正在处理的最终消息。

这就是它的工作方式吗?因此,我需要手动清除 body 吗?

此外,如果处理是一个长时间运行的过程会怎样?我想在数据发布后立即终止,而不是等到上下文中的完整处理。

我的蓝图是这样的:

 <camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&amp;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并像这样立即返回响应(注意!我没有执行该代码,所以请注意可能出现的拼写错误)。

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="timerToLog">
<from uri="restlet:http://localhost:7070/arena?restletMethod=POST&amp;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 方法将立即返回文本“OK”。

关于java - Camel reSTLet 在 POST 之后终止而不是返回主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com