Это очень странно, я создаю свой компонент следующим образом:
@Bean
public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
Config config = new Config();
config.useSingleServer().setAddress("redis://"+host+":"+port);
return new RedissonConnectionFactory(config);
}
@Bean
public ReactiveRedisMessageListenerContainer topicListener(RedissonConnectionFactory redissonConnectionFactory) {
return new ReactiveRedisMessageListenerContainer(redissonConnectionFactory);
}
Затем в моем контроллере:
@GetMapping(path = {"/register/"}, produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> registerToEvents() throws IOException {
return topicListener.receive(channel).map(message -> {
return ServerSentEvent.<String> builder().data(message.getMessage()).build();
}
);
}
Факт в том, что клиент впервые открывает соединение по подписке. не будет работать. Тогда последующая подписка будет работать правильно. Другой факт заключается в том, что общее число подписчиков всегда равно n + 1, это похоже на то, что первая подписка вызывает что-то и с этого момента оно остается там.