1

何らかの理由で、メソッド内のコンテキストdoAfterSuccessOrErrorが上流から利用 (移入) されていません。を使用してアクセスしようとしましたMono.subscriberContext()(抜粋を参照)。存在することを期待していますが、何らかの理由で存在しません。私は何か間違ったことをしていますか?

public class LoggingRequestExchangeFunction implements ExchangeFilterFunction {

    private final Logger log = LoggerFactory.getLogger(getClass());

    @Override
    public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
        long start = System.currentTimeMillis();

        return next.exchange(request).doAfterSuccessOrError((res, ex) -> {
            Mono.subscriberContext().map((ctx -> {
                log.info("doAfterSuccessOrError Context {}",ctx);
                // log req/res ...
                return ctx;
            })).subscribe();

        }).subscriberContext( ctx -> {
            log.info("SubscriberContext: {}" , ctx);
            return ctx;
        });
    }
}

ここにログ出力があります

23:16:59.426  INFO [reactor-http-epoll-2] .p.c.LoggingRequestExchangeFunction [] SubscriberContext: Context1{nexmo-tracing-context=TracingContext{{traceId=f04961da-933a-4d1d-85d5-3bea2c47432f, clientIp=N/A}}}
23:16:59.589  INFO [reactor-http-epoll-2] .p.c.LoggingRequestExchangeFunction [] doAfterSuccessOrError Context Context0{}
4

1 に答える 1