[
https://issues.apache.org/jira/browse/BEAM-13854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17489739#comment-17489739
]
Alexey Romanenko commented on BEAM-13854:
-----------------------------------------
[~mosche] Well, it was developed long before me, so I can only guess why is it
so. Maybe this BEAM-1573 and related PR can help?
[~rangadi] Could you give us some insights on this since, iirc, you did review
of that jira back in the days?
> Document casting trick for Avro value serializer in KafkaIO
> -----------------------------------------------------------
>
> Key: BEAM-13854
> URL: https://issues.apache.org/jira/browse/BEAM-13854
> Project: Beam
> Issue Type: Improvement
> Components: io-java-kafka
> Affects Versions: 2.36.0
> Reporter: Matt Casters
> Priority: P3
> Fix For: 2.37.0
>
>
> Consider we want to write Avro values to Kafka with for example the following
> code:
> {code:java}
> KafkaIO.Write<String, GenericRecord> stringsToKafka =
> KafkaIO.<String, GenericRecord>write()
> .withBootstrapServers(bootstrapServers)
> .withTopic(topic)
> .withKeySerializer(StringSerializer.class)
> .withValueSerializer(KafkaAvroSerializer.class)
> .withProducerConfigUpdates(producerConfigUpdates);{code}
> The KafkaAvroSerializer.class argument can't be passed as would normally be
> the case in Producer option:
> value.serializer=io.confluent.kafka.serializers.KafkaAvroSerializer
> So the question then is which class should we pass or how to cast. IntelliJ
> IDEA suggests a cast which doesn't compile.
> In the end the answer is simply:
> {code:java}
> .withValueSerializer((Class)KafkaAvroSerializer.class) {code}
> I think it's worth documenting this little trick more clearly in the Javadoc
> of KafkaIO to prevent others from bumping into the same issue.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)