Spring boot 从Apache Camel路由返回值到Spring引导控制器
我正在从Spring Boot控制器调用驼峰路由。驼峰路由调用一个REST服务,该服务返回一个字符串值,我试图将该值从驼峰路由返回给控制器。下面是Spring引导控制器:Spring boot 从Apache Camel路由返回值到Spring引导控制器,spring-boot,apache-camel,Spring Boot,Apache Camel,我正在从Spring Boot控制器调用驼峰路由。驼峰路由调用一个REST服务,该服务返回一个字符串值,我试图将该值从驼峰路由返回给控制器。下面是Spring引导控制器: @RestController @RequestMapping("/demo/client") public class DemoClientController { @Autowired private ProducerTemplate template; @GetMapping("/sayHello")
@RestController
@RequestMapping("/demo/client")
public class DemoClientController {
@Autowired private ProducerTemplate template;
@GetMapping("/sayHello")
public String sayHello() throws Exception {
String response = template.requestBody("direct:sayHelloGet", null, String.class);
return response;
}
}
下面是我的骆驼路线:
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:sayHelloGet")
.log("Route reached")
.setHeader(Exchange.HTTP_METHOD, simple("GET"))
.to("http://localhost:8080/demo/sayHello")
.log("${body}");
}
}
在路由中,日志正在打印REST服务的返回值,但该字符串不会返回给控制器。有人能建议如何将值返回到Spring引导控制器吗
我使用的Spring引导版本是2.2.5,Apache Camel版本是3.0.1。请参阅此常见问题解答
来自http的响应是基于流的,因此只能读取一次,然后通过日志读取,并作为响应“空”。所以
- 不记录
- 启用流缓存
- 将http响应转换为字符串(非流式传输且可重新读取)