#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)); } ); } }