Подстановочные знаки на верблюжьем маршруте - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть контроллер покоя с отображением запроса следующим образом:

@ PostMapping (value = "fpl / generate / {legIdentifier:. +}"

Мой верблюжий маршрут определен как с ("direct: / fpl / generate /").

Контроллер вызывает веб-службу, веб-служба вызывает класс 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);

}

}

Сгенерированная конечная точка выглядит примерно так: ///fpl/generate/LH.1234.30Jun2016.FRA.BOG.X1. Как настроить подстановочные знаки на верблюжьем маршруте, чтобы конечная точка могла вызываться

1 Ответ

0 голосов
/ 20 ноября 2018

Что ж, если вы не обязаны использовать конечную точку с полным URI, вы можете упростить ситуацию.

Вместо создания динамической конечной точки вы можете отправить все сообщения конечной точке direct:///fpl/generate и установить полный URI запроса в качестве заголовка сообщения.

Таким образом, вы можете использовать простую конечную точку маршрута и заголовок URI для принятия решений и т. Д. На основе полного URI.

...