Apache 骆驼路线未设置 body
Apache Camel Route doesn't set body
我在 Docker 网络中有两个 Apache Camel 路由器。
作为客户端,将body中的一些数据通过路由发送到外部。
我现在想从服务器路由器获取修改后的 body。
但显然 body 修改从未应用。
(对于上下文,初始请求是 post 请求,其中最终 body 应该是响应)
这是我的 "client" 路线的样子:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<restConfiguration component="restlet" bindingMode="json" port="8989" enableCORS="true"/>
<rest path="/finData">
<description>User rest service</description>
<post>
<to uri="direct:update"/>
</post>
</rest>
<route id="sendFinData">
<from uri="direct:update"/>
<log message="Got some data: ${body}"/>
<to uri="aclient://otherClient:9191"/>
</route>
下面是 "server" 的样子:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="receiveFinData">
<from
uri="aserver://0.0.0.0:9191"/>
<log message="Received via data: ${body}"/>
<setBody>
<simple>{"result": true }</simple>
</setBody>
</route>
更新:如果我将第二条路线添加到 "client" 并调用这条路线而不是 "server" 的外部路线并修改 body 那里它正在工作
因评论更新:当setBody
不是问题时,我要问一下代码中的流程。
- 您调用
/finData
是为了从客户端向服务器发送请求吗?
- 但是谁在听
aclient://otherClient:9191
?这条路线不在你的问题中。
- 并且
aserver://0.0.0.0:9191
的来电者也不在您的问题中。
可以post全程吗?
原回答
我认为@tadayoshi-sato 已经评论了您问题的解决方案。
您使用 Camel Simple language(一种表达式语言)将常量字符串设置到邮件正文中。
<setBody>
<constant>{"result": true }</constant>
</setBody>
我在 Docker 网络中有两个 Apache Camel 路由器。
作为客户端,将body中的一些数据通过路由发送到外部。
我现在想从服务器路由器获取修改后的 body。
但显然 body 修改从未应用。
(对于上下文,初始请求是 post 请求,其中最终 body 应该是响应)
这是我的 "client" 路线的样子:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<restConfiguration component="restlet" bindingMode="json" port="8989" enableCORS="true"/>
<rest path="/finData">
<description>User rest service</description>
<post>
<to uri="direct:update"/>
</post>
</rest>
<route id="sendFinData">
<from uri="direct:update"/>
<log message="Got some data: ${body}"/>
<to uri="aclient://otherClient:9191"/>
</route>
下面是 "server" 的样子:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="receiveFinData">
<from
uri="aserver://0.0.0.0:9191"/>
<log message="Received via data: ${body}"/>
<setBody>
<simple>{"result": true }</simple>
</setBody>
</route>
更新:如果我将第二条路线添加到 "client" 并调用这条路线而不是 "server" 的外部路线并修改 body 那里它正在工作
因评论更新:当setBody
不是问题时,我要问一下代码中的流程。
- 您调用
/finData
是为了从客户端向服务器发送请求吗? - 但是谁在听
aclient://otherClient:9191
?这条路线不在你的问题中。 - 并且
aserver://0.0.0.0:9191
的来电者也不在您的问题中。
可以post全程吗?
原回答
我认为@tadayoshi-sato 已经评论了您问题的解决方案。
您使用 Camel Simple language(一种表达式语言)将常量字符串设置到邮件正文中。
<setBody>
<constant>{"result": true }</constant>
</setBody>