스프링 부트 redis pub 하위 가이드에서 설명한대로 작동하는 Redis pub 하위 구성이 있습니다. 여기 Spring Session에서 제공하는 RedisMessageListenerContainer에 추가 MessageListener를 어떻게 구성합니까?
는@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(listenerAdapter, new ChannelTopic("broadcast"));
return container;
}
가 지금은 레디 스의 지원 봄 세션을 활용하고 싶었 RedisMessageListenerContainer의 빈 구성입니다. 그래서 구성 클래스를 추가했습니다. RedisHttpSessionConfig 이미 RedisMessageListenerContainer을 정의하기 때문에
@EnableRedisHttpSession
public class HttpSessionConfig {
}
지금, 나는 처음에이 예외를 얻고있다. 된 타입의 적격 빈이 [org.springframework.data.redis.listener.RedisMessageListenerContainer] 정의된다 : 하나의 정합 콩 예상되지만 2 발견 org.springframework.beans.factory.NoUniqueBeanDefinitionException :
은에 의한 용기를 redisMessageListenerContainer
이 하나의 컨테이너 빈하지만 문제는 다음가 어떻게 redisMessageListenerContainer에서 제공하는 기존의 컨테이너에 추가 내 수신기를 구성 할 수 있도록 그 해결하기 위해
, 내 ApplicationConfig에 정의 된 RedisMessageListenerContainer을 주석 ?
좋아요. RedisMessageListenerContainer 빈을 제거하고이를 내 MessageListenerAdaper 빈 구성의 메소드 매개 변수로 주입하여 문제를 해결할 수있었습니다. 나는 MessageListenerAdaper 빈 내부에서 RedisMessageListenerContainer 빈을 장식하고 같이
@Bean
MessageListenerAdapter listenerAdapter(RedisMessageListenerContainer container, PushNotificationsService receiver) {
MessageListenerAdapter listenerAdapter = new MessageListenerAdapter(receiver, "receiveMessage");
listenerAdapter.setSerializer(new Jackson2JsonRedisSerializer<NotificationMessage>(NotificationMessage.class));
container.addMessageListener(listenerAdapter, new ChannelTopic("broadcast"));
return listenerAdapter;
}
는 그러나 이것은 깨끗한 솔루션을하지 않는 것 같습니다. 더 좋은 아이디어가 있습니까?
발췌 문장이나 링크를 제공하십시오. 그것 없이는 말이되지 않습니다. –