-
Notifications
You must be signed in to change notification settings - Fork 2
Route Mechanism
Rodrigo Coelho edited this page Jul 15, 2023
·
2 revisions
rest().get(routeUtils.buildFrom(api)
+ Constants.MATCH_ON_URI_PREFIX
+ api.isMatchOnUriPrefix());
routeDefinition = from(Constants.CAMEL_DIRECT + routeId);
routeDefinition
.setHeader(Constants.X_FORWARDED_HOST, constant(reverseProxyHost));
.setHeader(Constants.X_FORWARDED_PREFIX, constant(capiContext + api.getContext()));
routeDefinition
.onException(Exception.class)
.handled(true)
.setHeader(Constants.ERROR_API_SHOW_TRACE_ID, constant(isZipkinTraceIdVisible))
.setHeader(Constants.ERROR_API_SHOW_INTERNAL_ERROR_MESSAGE, constant(isInternalExceptionMessageVisible))
.setHeader(Constants.ERROR_API_SHOW_INTERNAL_ERROR_CLASS, constant(isInternalExceptionVisible))
.process(httpErrorProcessor)
.setHeader(Constants.ROUTE_ID_HEADER, constant(routeID))
.toF(Constants.FAIL_REST_ENDPOINT_OBJECT, capiGatewayErrorEndpoint)
.removeHeader(Constants.ERROR_API_SHOW_TRACE_ID)
.removeHeader(Constants.ERROR_API_SHOW_INTERNAL_ERROR_MESSAGE)
.removeHeader(Constants.ERROR_API_SHOW_INTERNAL_ERROR_CLASS)
.removeHeader(Constants.CAPI_URL_IN_ERROR)
.removeHeader(Constants.CAPI_URI_IN_ERROR)
.removeHeader(Constants.ROUTE_ID_HEADER)
.end();
if(api.isFailoverEnabled()) {
routeDefinition
.process(metricsProcessor)
.loadBalance()
.failover(1, false, api.isRoundRobinEnabled(), false)
.to(routeUtils.buildEndpoints(api))
.end()
.removeHeader(Constants.X_FORWARDED_HOST)
.removeHeader(Constants.X_FORWARDED_PREFIX)
.routeId(routeId);
}
if(api.isStickySession()) {
routeDefinition
.process(metricsProcessor)
.loadBalance(new **SessionChecker**(stickySessionCacheManager, api.getStickySessionParam(), api.isStickySessionParamInCookie()))
.to(routeUtils.buildEndpoints(api))
.end()
.removeHeader(Constants.X_FORWARDED_HOST)
.removeHeader(Constants.X_FORWARDED_PREFIX)
.routeId(routeId);
}
if(api.isTenantAware()) {
routeDefinition
.process(metricsProcessor)
.loadBalance(new **TenantAwareLoadBalancer**())
.to(routeUtils.buildEndpoints(api))
.end()
.removeHeader(Constants.X_FORWARDED_HOST)
.removeHeader(Constants.X_FORWARDED_PREFIX)
.routeId(routeId);
}
routeDefinition
.process(metricsProcessor)
.to(routeUtils.buildEndpoints(api))
.end()
.removeHeader(Constants.X_FORWARDED_HOST)
.removeHeader(Constants.X_FORWARDED_PREFIX)
.routeId(routeId);
routeUtils.registerMetric(routeId);
api.setRouteId(routeId);
routeUtils.registerTracer(api);