While developing applications using Spring batch, especially in a micro-service project, we sometimes face one or most of the following cases:
- The necessity of getting the security context inside the batch items to call methods that require authorizations inside the same micro-service or perform remote processing by calling other micro-services using Feign Client (HTTP) or Spring Cloud Stream (broker like Kafka, RabbitMq …)
- Propagating Sleuth trace Id and span Id in order to enhance logs traceability inside all the application components including other micro-services so the trace will not be lost if we use Job.
- Getting the connected user Locale (i18n) in order to generate internationalized output otherwise, all the Job outputs will be generated in the default server language.
- Retrieving objects stored inside Mapped Diagnostic Context (MDC) for tracing purposes.
The following schema illustrates remote calls that can be performed in a micro-service-based application and the context information that String Batch items can propagate.