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} ");
}
}
答案 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
消费