用例:在我的应用程序中有一个REST Controller ,在Spring boot的帮助下开发,我的要求是,我必须将请求数据从 Controller 传递到路由,再次需要从路由将数据传递给MQ
这里如何将 inputReq 数据从 Controller 传递到路由?有人可以帮忙吗
@Controller
public class RequestController {
@PostMapping("/request")
public String requestMapping(@RequestBody String inputReq) {
new ProduceRouter(); // instance of the apache camel route
return null;
}
}
下面是 apache Camel 路线:
@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} ");
}
}
最佳答案
在您的 Controller 中, Autowiring 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
关于spring - 如何将请求数据从 Spring Boot Controller 传递到 apache Camel 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63373252/