@Bean
    @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
    @ConditionalOnMissingBean(name = "kafkaTicketRegistryTemplate")
    public KafkaOperations<String, BaseMessageQueueCommand> kafkaTicketRegistryTemplate(
        final ConfigurableApplicationContext applicationContext,
        final CasConfigurationProperties casProperties) {
        val kafka = casProperties.getTicket().getRegistry().getKafka();
        val factory = new KafkaObjectFactory<String, BaseMessageQueueCommand>(kafka.getBootstrapAddress());
        return factory.getKafkaTemplate(new StringSerializer(), new JsonSerializer<>(MAPPER));
    }
This is {@link CasKafkaTicketRegistryAutoConfiguration}.

@author Misagh Moayyed
@since 7.2.0
support/cas-server-support-kafka-ticket-registry/src/main/java/org/apereo/cas/config/CasKafkaTicketRegistryAutoConfiguration.java