如何将请求数据从Spring Boot控制器传递到apache骆驼路线

时间:2020-08-12 09:03:06

标签: spring spring-boot apache-camel

UseCase::在我的应用中有一个REST控制器,借助Spring引导开发,我的要求是,我必须将请求数据从控制器传递到路由,再次从路由传递将数据传递到MQ

这里如何将 inputReq 数据从控制器传递到路由?谁能帮忙

@Controller
public class RequestController {

    @PostMapping("/request")
    public String requestMapping(@RequestBody String inputReq) {
        new ProduceRouter();  // instance of the apache camel route
        return null;

    }
}

以下是一种骆驼路线:

@Component
public class ProduceRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {
            
        .from("jms:RequestQueue?disableReplyTo=true")
        .log("Received Body is  ${body}   and header info is   ${headers}  ");

        

    }
}

1 个答案:

答案 0 :(得分:1)

在您的控制器中,自动装配CamelContext和ProducerTemplate的实例。

@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producer;

然后,您需要使用ExchangeBuilder创建交换请求并添加请求正文。

Exchange exchangeRequest = ExchangeBuilder.anExchange(camelContext)
.withBody(inputReq).build();

然后您可以在生产者对象上调用send方法,以进入您的路由并捕获响应。

Exchange exchangeResponse = producer.send("direct:startRoute", exchangeRequest).

然后在您的路由文件中,您可以从direct:startRoute消费