我有带有请求映射的rest控制器,如下所示:
@PostMapping(value =“ fpl / generate / {legIdentifier:。+}”
我的骆驼路线定义为from(“ direct:/ fpl / generate /”)。
控制器调用Web服务,Web服务调用FluentEndpointInvoker类,该类调用上面定义的路由。
public class FluentEndpointInvoker {
@EndpointInject(uri = BASE_ENDPOINT_URI)
private FluentProducerTemplate producer;
@Value("${server.servlet.context-path}")
private String contextRoot;
public <T, R> T request(Class<T> type, R request, HttpHeaders headers) {
return producer.withProcessor(exchange -> {
exchange.getIn().setBody(request, request.getClass());
headers.forEach((key, value) -> exchange.getIn().setHeader(key, value));
String endpoint = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()
.getRequestURI();
exchange.getIn().setHeader(ROUTE_ENDPOINT_HEADER, "direct:".concat(endpoint.replaceFirst(contextRoot, "")));
}).request(type);
}
}
生成的端点类似于direct:///fpl/generate/LH.1234.30Jun2016.FRA.BOG.X1。如何在骆驼路线中配置通配符,以便可以调用端点
答案 0 :(得分:0)
好吧,如果不被迫使用具有完整URI的端点,则可以简化这种情况。
代替创建动态端点,您可以将所有消息发送到端点direct:///fpl/generate
并将完整的请求URI设置为消息的标头。
这样,您就可以使用一个简单的路由端点,并可以根据完整的URI来使用URI标头进行决策等。