Что делает @EnableSchemaRegistryClient? - PullRequest
0 голосов
/ 18 июня 2020

Так как это мое первое приложение, в котором я использую реестр схем, поэтому я немного смущен @EnableSchemaRegistryClient, поскольку, когда я удаляю эту аннотацию из своего основного класса, мой производитель все еще взаимодействует с реестром схемы и автоматически публикует схему и мой потребитель также отлично работает с получением схемы правильно с именем субъекта Итак, что делают @EnableSchemaRegistryClient и @EnableSchemaRegistryServer?

Я использую изображение confluentinc / cp-schema-registry docker для реестра схемы и io. confluent.kafka.serializers.KafkaAvroSerializer и io.confluent.kafka.serializers.KafkaAvroDeserializer для сериализации и де-сериализации

это мой application.yml производителя

spring:
  cloud:
    stream:
      default:
        producer:
          useNativeEncoding: true
      bindings:
        output:
          destination: inventory
          content-type: application/*+avro
      kafka:
        binder:
          producer-properties:
            key.serializer: org.apache.kafka.common.serialization.StringSerializer
            value.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
            schema.registry.url: http://localhost:8081

попробуйте разработать меня относительно этой аннотации с помощью некоторого сценария ios, где это может быть полезно

РЕДАКТИРОВАТЬ 1: Мои результаты -

Когда я вижу код @EnableSchemaRegistryClient, он вызывает класс конфигурации SchemaRegistryCl ientConfiguration, в котором bean-компонент DefaultSchemaRegistryClient является ConditionalOnMissingBean. так как я использую KafkaAvroSerializer и Deserializer, которые по умолчанию регистрируют CachedSchemaRegistryClient для kafkaSerializers, так что это означает, что DefaultSchemaRegistryClient никогда не будет зарегистрирован в случае kafkaAvroSerializer, пока мы не создадим bean-компонент этого как основной

Пожалуйста, предложите * 1014 влияние, которое может оказать *

SchemaRegistryConfiguration.class

@Bean
    @ConditionalOnMissingBean
    public SchemaRegistryClient schemaRegistryClient() {
        DefaultSchemaRegistryClient defaultSchemaRegistryClient = new DefaultSchemaRegistryClient();

        if (StringUtils.hasText(this.schemaRegistryClientProperties.getEndpoint())) {
            defaultSchemaRegistryClient
                    .setEndpoint(this.schemaRegistryClientProperties.getEndpoint());
        }

        SchemaRegistryClient client = (this.schemaRegistryClientProperties.isCached())
                ? new CachingRegistryClient(defaultSchemaRegistryClient)
                : defaultSchemaRegistryClient;

        return client;
    }

, это означает, что SchemaRegistryclient зависит от типа сериализатора, который вы используете ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...