Here are some of the top challenges that an organization face in their microservices journey:
Bounded Context
Dynamic Scale up and Scale Down
Monitoring
Fault Tolerance
Cyclic dependencies
DevOps Culture
xxxxxxxxxx
@Order(1)
@Component
public class RequestTraceFilter implements GlobalFilter {
private static final Logger logger = LoggerFactory.getLogger(RequestTraceFilter.class);
@Autowired
FilterUtility filterUtility;
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
HttpHeaders requestHeaders = exchange.getRequest().getHeaders();
if (isCorrelationIdPresent(requestHeaders)) {
logger.debug("EazyBank-correlation-id found in tracing filter: {}. ",
filterUtility.getCorrelationId(requestHeaders));
} else {
String correlationID = generateCorrelationId();
exchange = filterUtility.setCorrelationId(exchange, correlationID);
logger.debug("EazyBank-correlation-id generated in tracing filter: {}.", correlationID);
}
return chain.filter(exchange);
}
private boolean isCorrelationIdPresent(HttpHeaders requestHeaders) {
if (filterUtility.getCorrelationId(requestHeaders) != null) {
return true;
} else {
return false;
}
}
private String generateCorrelationId() {
return java.util.UUID.randomUUID().toString();
}
}
https://github.com/eazybytes/microservices-with-spring-sectionwise-code