Java 在apache camel-spring dsl xml中调用两个toD
我将在RESTDSL xml中创建一个rest服务。在此基础上,我创建了一个路由。对于路由,我将调用我自己的微服务(这是其他项目创建的),以使用toD uri。一旦得到响应,我将从主体中获取值(响应json)。在此之后,我将再次根据响应值调用同一路由中的其他服务(我们在响应中使用一个字段) 我的问题是Java 在apache camel-spring dsl xml中调用两个toD,java,apache-camel,spring-dsl,Java,Apache Camel,Spring Dsl,我将在RESTDSL xml中创建一个rest服务。在此基础上,我创建了一个路由。对于路由,我将调用我自己的微服务(这是其他项目创建的),以使用toD uri。一旦得到响应,我将从主体中获取值(响应json)。在此之后,我将再次根据响应值调用同一路由中的其他服务(我们在响应中使用一个字段) 我的问题是 如何从第一个服务中的响应中获取值 以及如何在第一个值中设置尊重值的标题 如何呼叫路线中的2个服务。可以调用tod uri两次吗 示例代码 <toD uri=http://localhost
<toD uri=http://localhost >
<log message =${body} >
(this response is going to set 2nd service query parameter value )
<toD uri=http://localhost? 1 services response values a>
(此响应将设置第二个服务查询参数值)
我不确定是否完全理解您的情况,但以下是我对您的问题的回答:
1) 您可以使用JsonPath从JSON响应中选择任何值。要在以后使用它,您可能需要将其保存在消息头上
.setHeader("myHeader", jsonpath("$.your.json.path"))
.setHeader("myHeader", jsonpath("$.your.json.path")) // assume jsonpath result is "world"
.to("rest:get:hello/{myHeader}") // URI "hello/world" is called
2) 对不起,我不明白这个问题:-)
3) 是的,您可以制作任意数量的.to()
或.toD()
但是,如果您想调用REST服务并使用驼峰REST组件,则可以从内置URI模板中获益。这意味着您可能不需要.toD()
比如说
.to("rest:get:hello/{myHeader}")
将插入从上面的JSON响应中提取的值,因为占位符名称在消息头中查找,如果找到,则替换为相应消息头的值
.setHeader("myHeader", jsonpath("$.your.json.path"))
.setHeader("myHeader", jsonpath("$.your.json.path")) // assume jsonpath result is "world"
.to("rest:get:hello/{myHeader}") // URI "hello/world" is called
不确定我是否完全理解你的情况,但以下是我对你问题的回答: 1) 您可以使用JsonPath从JSON响应中选择任何值。要在以后使用它,您可能需要将其保存在消息头上
.setHeader("myHeader", jsonpath("$.your.json.path"))
.setHeader("myHeader", jsonpath("$.your.json.path")) // assume jsonpath result is "world"
.to("rest:get:hello/{myHeader}") // URI "hello/world" is called
2) 对不起,我不明白这个问题:-)
3) 是的,您可以制作任意数量的.to()
或.toD()
但是,如果您想调用REST服务并使用驼峰REST组件,则可以从内置URI模板中获益。这意味着您可能不需要.toD()
比如说
.to("rest:get:hello/{myHeader}")
将插入从上面的JSON响应中提取的值,因为占位符名称在消息头中查找,如果找到,则替换为相应消息头的值
.setHeader("myHeader", jsonpath("$.your.json.path"))
.setHeader("myHeader", jsonpath("$.your.json.path")) // assume jsonpath result is "world"
.to("rest:get:hello/{myHeader}") // URI "hello/world" is called