Este problema é uma extensão do problema SO Spring Integration Restore ReactorContext into Imperative Processing
Qualquer exceção lançada após a chamada do WebFlux via WebFluxRequestExecutingMessageHandler
está faltando a Trace
informação.
Amostra que descreve o problema disponÃvel em https://github.com/syedyusufh/simple-handle-reactive.git
Isto é o que está acontecendo.
- Chamada WebFlux concluÃda, mas há erros de negócios na resposta.
- O Transformer tenta converter a resposta em Object e, em seguida, procura por erros de negócios; nesse caso, lança o usuário definido para o mesmo.
- Esta exceção lançada primeiro é registrada automaticamente por meio de
WebFluxRequestExecutingMessageHandler
onde o contexto é perdido - Em seguida, a exceção é encaminhada para o errorChannel definido pelo aplicativo, que cria um novo traceId
Exceção:
2m2024-06-24T20:27:02.445+04:00 INFO 1436 --- [ scheduling-1] [66799e5608c967d694f450b82077c38c-fadc3f15d16b6b11] c.i.sample.config.TracingConfig : Request Headers: [Content-Type:"application/json", traceparent:"00-66799e5608c967d694f450b82077c38c-fadc3f15d16b6b11-00"]
2024-06-24T20:27:03.997+04:00 INFO 1436 --- [ctor-http-nio-3] [66799e5608c967d694f450b82077c38c-fadc3f15d16b6b11] c.i.sample.config.TracingConfig : Response Headers: [Access-Control-Allow-Origin:"*", Alt-Svc:"h3=":443"; ma=2592000", Content-Type:"application/json", Date:"Mon, 24 Jun 2024 16:27:05 GMT", Server:"Caddy", Vary:"Accept-Encoding", Transfer-Encoding:"chunked"]
2024-06-24T20:27:04.089+04:00 ERROR 1436 --- [oundedElastic-1] [ ] .o.WebFluxRequestExecutingMessageHandler : Failed to send async reply: org.springframework.integration.support.MessageBuilder@5e1691b0
Não devolva essa exceção ao thread do adaptador de canal WebFlux. Considere lidar com isso manualmente ou via
ExpressionEvaluatingRequestHandlerAdvice
: https://docs.spring.io/spring-integration/reference/handler-advice/classes.html#expression-advice