Spring boot 从Apache Camel路由返回值到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")

我正在从Spring Boot控制器调用驼峰路由。驼峰路由调用一个REST服务,该服务返回一个字符串值,我试图将该值从驼峰路由返回给控制器。下面是Spring引导控制器:

@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响应转换为字符串(非流式传输且可重新读取)