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(一种表达式语言)将常量字符串设置到邮件正文中。

改用Camel Constant language

<setBody>
    <constant>{"result": true }</constant>
</setBody>