本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從第三方結構描述登錄檔遷移至 AWS Glue 結構描述登錄檔
從第三方結構描述登錄檔遷移至 AWS Glue 結構描述登錄檔,對現有、目前的第三方結構描述登錄檔具有相依性。如果在使用第三方結構描述登錄檔傳送的 Apache Kafka 主題中有記錄,則消費者需要第三方結構描述登錄檔來還原序列化這些記錄。AWSKafkaAvroDeserializer
提供指定次要還原序列化程式類別的能力,此類別指向第三方還原序列化程式並用於還原序列化這些記錄。
淘汰第三方結構描述有兩個條件。首先,只有在使用第三方結構描述登錄檔的 Apache Kafka 主題中的記錄不再被任何消費者需要後,才會發生淘汰。其次,取決於針對這些主題指定的保留期間,Apache Kafka 主題的老化可能會導致淘汰。請注意,如果您有無限保留的主題,您仍然可以遷移至 AWS Glue 結構描述登錄檔,但您將無法淘汰第三方結構描述登錄檔。因應措施是,您可以使用應用程式或 Mirror Maker 2 讀取目前主題,並使用 AWS Glue 結構描述登錄檔產生新主題。
從第三方結構描述登錄檔遷移至 AWS Glue 結構描述登錄檔:
建立 AWS Glue 結構描述登錄檔中的登錄檔,或使用預設登錄檔。
停止消費者。修改它以包含 AWS Glue 結構描述登錄檔做為主要的還原序列化程式,並包含第三方結構描述登錄檔做為次要。
設定消費者屬性。在此範例中,secondary_deserializer 設定為不同的還原序列化程式。行為如下:消費者從 Amazon 檢索記錄,MSK並首先嘗試使用
AWSKafkaAvroDeserializer
. 如果無法為 AWS Glue 結構描述登錄檔讀取包含 Avro 結構描述 ID 的魔術位元組結構描述,則AWSKafkaAvroDeserializer
會嘗試使用 secondary_deserializer 中提供的還原序列化程式類別。次要還原序列化程式專屬的屬性也需要在消費者屬性中提供,例如 schema_registry_url_config 和 specific_avro_reader_config,如下所示。consumerProps.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); consumerProps.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, AWSKafkaAvroDeserializer.class.getName()); consumerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, KafkaClickstreamConsumer.gsrRegion); consumerProps.setProperty(AWSSchemaRegistryConstants.SECONDARY_DESERIALIZER, KafkaAvroDeserializer.class.getName()); consumerProps.setProperty(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, "
URL for third-party schema registry
"); consumerProps.setProperty(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, "true");
重新啟動消費者。
停止生產者並將生產者指向 AWS Glue 結構描述登錄檔。
設定生產者屬性。在這個範例中,生產者將使用 default-registry 和自動註冊結構描述版本。
producerProps.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); producerProps.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, AWSKafkaAvroSerializer.class.getName()); producerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2"); producerProps.setProperty(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.SPECIFIC_RECORD.getName()); producerProps.setProperty(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, "true");
(選用) 手動將現有的結構描述和結構描述版本從目前的第三方結構描述登錄檔移至 AWS Glue 結構描述登錄檔,無論是 AWS Glue 結構描述登錄檔中的預設登錄檔或 AWS Glue 結構描述登錄檔中的特定非預設登錄檔。這可以透過以JSON格式從第三方結構描述登錄檔匯出結構描述,並使用 AWS Management Console 或在 S AWS Glue chema Registry 中建立新的結構描述來完成。 AWS CLI
如果您需要使用 AWS CLI 和啟用自動註冊結構描述版本的新建立綱要版本啟用相容性檢查 AWS Management Console,或者當生產者傳送具有新結構描述版本的新結構描述的訊息時,此步驟可能很重要。
啟動生產者。