骆驼路线中的通配符

时间:2018-11-20 04:34:29

标签: apache-camel spring-camel

我有带有请求映射的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。如何在骆驼路线中配置通配符,以便可以调用端点

1 个答案:

答案 0 :(得分:0)

好吧,如果不被迫使用具有完整URI的端点,则可以简化这种情况。

代替创建动态端点,您可以将所有消息发送到端点direct:///fpl/generate并将完整的请求URI设置为消息的标头。

这样,您就可以使用一个简单的路由端点,并可以根据完整的URI来使用URI标头进行决策等。