Hi Sigalit,
Could you explain a bit more in detail what you mean by 2 different types of
messages?
Do they share the same schema, e.g. using a union / one of type? Or are you in
fact talking about different messages with separate schemas (e.g. discriminated
using a message header)?
The recommended usage (at least with Confluent) is to use one schema per topic.
Using the Confluent registry it’s fairly simple then:
.withValueDeserializer(
ConfluentSchemaRegistryDeserializerProvider.of(registryUrl,
subject, null /* latest */, config)))
Most likely you have to implement a similar DeserializerProvider for Apicurio.
You could also try using apicurio.registry.as-confluent, but that requires to
configure your producers accordingly.
I any case, I suggest you study ConfluentSchemaRegistryDeserializerProvider.
That should lead you a path forward.
Best,
Moritz
On 09.08.22, 13:08, "Sigalit Eliazov" <[email protected]> wrote:
Hi all we have a single kafka topic which is used to receive 2 different types
of messages. These 2 messages are Avro. So when reading messages from kafka i
used the GenericRecord KafkaIO. <String, GenericRecord>read()
.withBootstrapServers(bootstrapServers)
Hi all
we have a single kafka topic which is used to receive 2 different types of
messages.
These 2 messages are Avro.
So when reading messages from kafka i used the GenericRecord
KafkaIO.<String, GenericRecord>read()
.withBootstrapServers(bootstrapServers)
.withTopic(topic)
.withConsumerConfigUpdates(ImmutableMap.of(
SerdeConfig.REGISTRY_URL, PipelineUtil.getSchemaURL(),
ConsumerConfig.GROUP_ID_CONFIG, consumerGroup,
SerdeConfig.CHECK_PERIOD_MS, TimeUnit.DAYS.toMillis(1)
))
.withKeyDeserializer(StringDeserializer.class)
I am not sure how to define the withValueDeserializer and coder.
i tried to read the message as GenericRecord but it fails with
"Could not extract the Kafka Deserializer type from class
io.apicurio.registry.serde.avro.AvroKafkaDeserialize"
i am using apicurio as the schema registry
Thanks
Sigalit
As a recipient of an email from Talend, your contact personal data will be on
our systems. Please see our privacy notice. <https://www.talend.com/privacy/>