@Bean
        @ConditionalOnMissingBean(name = "redisTicketRegistryMessageListener")
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        @Lazy(false)
        public MessageListener redisTicketRegistryMessageListener(
            @Qualifier("ticketRedisTemplate")
            final CasRedisTemplate<String, RedisTicketDocument> ticketRedisTemplate,
            @Qualifier("redisKeyGeneratorFactory")
            final RedisKeyGeneratorFactory redisKeyGeneratorFactory,
            @Qualifier("redisTicketRegistryMessageIdentifier")
            final PublisherIdentifier redisTicketRegistryMessageIdentifier,
            @Qualifier("redisTicketRegistryCache")
            final Cache<String, Ticket> redisTicketRegistryCache) {
            val adapter = new MessageListenerAdapter(
                new DefaultRedisTicketRegistryMessageListener(redisTicketRegistryMessageIdentifier,
                    redisKeyGeneratorFactory, redisTicketRegistryCache));
            adapter.setSerializer(ticketRedisTemplate.getValueSerializer());
            adapter.setStringSerializer((RedisSerializer<String>) ticketRedisTemplate.getKeySerializer());
            return adapter;
        }
This is {@link CasRedisTicketRegistryAutoConfiguration}.

@author Misagh Moayyed
@since 5.0.0
support/cas-server-support-redis-ticket-registry/src/main/java/org/apereo/cas/config/CasRedisTicketRegistryAutoConfiguration.java