Как вы добавляете реактивные перехватчики в контроллеры с аннотациями Spring Boot?

#spring-boot #spring-messaging #rsocket #spring-rsocket

Вопрос:

Я настроил показатели rsocket, используя rsocket-micrometer на стороне КЛИЕНТА, настроив RSocketConnector перехватчики с помощью, например, этого (Котлин):

 rSocketReqesterBuilder.rsocketConnector { configureConnector(it) }   // ...   private fun configureConnector(rSocketConnector: RSocketConnector) {  rSocketConnector.interceptors { iRegistry -gt;  // This gives us the rsocket.* counter metrics, like rsocket.frame  iRegistry.forResponder(MicrometerRSocketInterceptor(registry, *localTags.toArray()))  iRegistry.forRequester(MicrometerRSocketInterceptor(registry, *localTags.toArray()))  iRegistry.forConnection(MicrometerDuplexConnectionInterceptor(registry, *localTags.toArray()))  }  }  

Но на стороне СЕРВЕРА я использую аннотированный ( @MessageMapping ) Контроллер RSocket с пружинной загрузкой, вот так (Java):

 @MessageMapping("replace-channel-controller")  public Fluxlt;TransformResponsegt; replace(Fluxlt;Stringgt; texts) ...  

Здесь я явно не контролирую соединитель.
Как добавить перехватчики на стороне сервера?

Ответ №1:

 @Configuration public class RSocketConfig implements RSocketServerCustomizer {   private final MeterRegistry registry;   public RSocketConfig(MeterRegistry registry) {  this.registry = registry;  }   @Override  public void customize(RSocketServer rSocketServer) {  rSocketServer.interceptors(  iRegistry -gt; {  log.info("Adding RSocket interceptors...");  iRegistry.forResponder(new MicrometerRSocketInterceptor(registry, tags));  iRegistry.forRequester(new MicrometerRSocketInterceptor(registry, tags));  iRegistry.forConnection(new MicrometerDuplexConnectionInterceptor(registry, tags));  }  );  } }