//@Service
public class SseWebClient extends SseEventService {

   private final WebClient client;

   public SseWebClient(WebClient.Builder builder) {
       this.client = builder.baseUrl("http://mbiolance-service-message")
               .defaultHeader("Authorization","Bearer ADMIN-TEMPLATE")
               .build();
   }

   @Override
   public Mono<String> createEvent(LiveUpdate liveUpdate) {
       return client.post().uri("/sse/events")
               .body(Mono.just(liveUpdate),LiveUpdate.class)
               .retrieve()
               .bodyToMono(String.class);
   }

}

@Configuration
public class WebClientConfig {
    @LoadBalanced
    @Bean
    public WebClient.Builder register() {
        return WebClient.builder();
    }

//    @LoadBalanced
//    @Bean
//    public WebReactiveFeign.Builder register(){
//        return WebReactiveFeign.builder();
//    }

//    @Bean
//    public ReactiveHttpRequestInterceptor r1() {
//        return new ReactiveHttpRequestInterceptor() {
//
//            @Override
//            public Mono<ReactiveHttpRequest> apply(ReactiveHttpRequest t) {
//                Map<String, String> headers = ThreadLocalUtil.getCurrentHeaders();
////                Map<String, String> requestMap = ThreadLocalUtil.get();
////                SysUserDto user = SysUserInfoContext.getUser();
//                t.headers().put("Authorization", Arrays.asList("Bearer ADMIN-TEMPLATE"));
//                return Mono.just(t);
//            }
//        };
//    }
//////
//    @Bean
//    public ReactiveHttpRequestInterceptor kuaidiInterceptor() {
//        Mono.empty().subscriberContext(context -> {
//            Context context1 = context.put("key", "Hello");
//            System.out.println((String) context1.get("key"));
//            return context1;
//        });
//    return reactiveHttpRequest ->
//            Mono.subscriberContext().map(ctx -> {
////                if (ctx.isEmpty()) {
////                    return reactiveHttpRequest;
////                }
//                reactiveHttpRequest.headers().put("Authorization",
//                        Arrays.asList("Bearer ADMIN-TEMPLATE"));
//                return reactiveHttpRequest;
//            });
//}

}