Akka 使反应式卡夫卡与合流模式注册表Avro模式一起工作
如何使反应式Kafka()与合流模式注册表Avro模式一起工作?以下是我的示例代码:Akka 使反应式卡夫卡与合流模式注册表Avro模式一起工作,akka,apache-kafka,avro,reactive,Akka,Apache Kafka,Avro,Reactive,如何使反应式Kafka()与合流模式注册表Avro模式一起工作?以下是我的示例代码: def create(groupId:String)(隐式系统:ActorSystem):源[ConsumerMessage.CommittableMessage[String,Array[Byte]],Consumer.Control]={ val consumerSettings=consumerSettings(系统、新的StringDeserializer、新的ByteArraydSerializer
def create(groupId:String)(隐式系统:ActorSystem):源[ConsumerMessage.CommittableMessage[String,Array[Byte]],Consumer.Control]={
val consumerSettings=consumerSettings(系统、新的StringDeserializer、新的ByteArraydSerializer)
.带引导服务器(引导)
.withGroupId(groupId)
.withProperty(ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG,“最早”)
.withProperty(“schema.registry.url”,schemaRegistryUrl)
.withProperty(ConsumerConfig.KEY\u反序列化程序\u类\u配置,classOf[String].getName)
.withProperty(ConsumerConfig.VALUE\反序列化程序\类\配置,类[KafkaAvroDeserializer].getName)
.withProperty(kafkaavroderializerconfig.SPECIFIC\u AVRO\u READER\u CONFIG,“true”)
Consumer.CommitteableSource(consumerSettings,Subscriptions.topics(createDataSetJobRequestTopic))
}
您只需将使用者配置为使用汇合反序列化器:io.Confluent.kafka.serializers.KafkaAvroDeserializer.class
设置以下属性:
- ConsumerConfig.KEY\u反序列化程序\u CLASS\u配置
- 消费者配置值\反序列化器\类\配置
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>${io.confluent.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
合流的
谢谢,我知道如何使用schema registry使用kafka avro消息,我问的问题是如何将其与反应式kafka一起使用。它需要像上面粘贴的代码一样首先构造consumerSettings。我不知道是否可以直接获取Source[ConsumerMessage.CommitteableMessage[String,AvroClass],因为KafkaavrodeserialIzer不是泛型的。否则,我获取了CommitteableMessage[String,Object]然后将其转换到特定的一个?嗨,你能解决这个问题吗。我遇到了通过akka streams kafka反序列化kafka消息的确切问题。它返回一个我无法转换为我的类型的对象。似乎其他人没有修复和报告此问题。