Apache kafka 你喜欢Quarkus&;微文件支持合流模式注册表Avro模式?
合流模式注册表不使用Quarkus和MicroporFile 以下面的错误结束Apache kafka 你喜欢Quarkus&;微文件支持合流模式注册表Avro模式?,apache-kafka,confluent-schema-registry,quarkus,microprofile,smallrye-reactive-messaging,Apache Kafka,Confluent Schema Registry,Quarkus,Microprofile,Smallrye Reactive Messaging,合流模式注册表不使用Quarkus和MicroporFile 以下面的错误结束 ***********ERROR Caused by: io.confluent.common.config.ConfigException: Missing required configuration "schema.registry.url" which has no default value. 我尝试构建Quarkus kafka使用者应用程序,该应用程序必须反序列化kafka主题中可用的a
***********ERROR
Caused by: io.confluent.common.config.ConfigException: Missing required configuration "schema.registry.url" which has no default value.
我尝试构建Quarkus kafka使用者应用程序,该应用程序必须反序列化kafka主题中可用的avro序列化程序消息。当我尝试如下配置架构注册表(Confluent`s)以使用avro反序列化kafka消息时,我遇到异常
配置
schema.registry.url=http://kafka-exposed:8081
kafka.bootstrap.servers=kafka-exposed:9200
# Configure the Kafka source (we read from it)
mp.messaging.incoming.test-quarkustest.group.id=demo
mp.messaging.incoming.test-quarkustest.connector=smallrye-kafka
mp.messaging.incoming.test-quarkustest.topic=kafkacollectioncomplex
mp.messaging.incoming.test-quarkustest.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer
mp.messaging.incoming.test-quarkustest.value.value.converter=io.confluent.connect.avro.AvroConverter
mp.messaging.incoming.test-
mp.messaging.incoming.test-quarkustest.value.converter.schemas.enable=true
我也试过了
mp.messaging.incoming.test-quarkustest.value.converter.schema.registry.url=http://kafka-exposed:8081
mp.messaging.incoming.test-quarkustest.value.converter.schema.registry.url=http://kafka-exposed:8081
@ApplicationScoped
公共类ReadKafkaTopic{
@传入(“测试quarkustest”)
public CompletionStage进程(KafkaMessage消息){
JsonObject data=message.getPayload();
JsonArray数组=(JsonArray)data.getJsonArray(“技能”);
返回message.ack();
}
}
性质
schema.registry.url=http://kafka-exposed:8081`
kafka.bootstrap.servers=kafka-exposed:9200`
# Configure the Kafka source (we read from it)
mp.messaging.incoming.test-quarkustest.group.id=demo`
mp.messaging.incoming.test-quarkustest.connector=smallrye-kafka`
mp.messaging.incoming.test-quarkustest.topic=kafkacollectioncomplex`
mp.messaging.incoming.test-quarkustest.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer`
mp.messaging.incoming.test-quarkustest.value.value.converter=io.confluent.connect.avro.AvroConverter`
mp.messaging.incoming.test-quarkustest.value.converter.schemas.enable=true`
我也试过了
**********错误
原因:io.confluent.common.config.ConfigException:缺少没有默认值的必需配置“schema.registry.url”。
错误***********************
2019-10-27 19:08:11974错误[io.sma.rea.mes.imp.ConfiguredChannel Factory](主)无法在初始化期间创建发布服务器或订阅服务器:org.apache.kafka.common.KafkaException:无法构造kafka使用者
76位于org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:811)
77位于org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:624)
78位于org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:605)
79位于io.vertx.kafka.client.consumer.KafkaReadStream.create(KafkaReadStream.java:100)
80位于io.vertx.kafka.client.consumer.KafkaConsumer.create(KafkaConsumer.java:74)
81位于io.vertx.reactivex.kafka.client.consumer.KafkaConsumer.create(KafkaConsumer.java:168)
82 at io.smallrye.reactive.messaging.kafka.KafkaSource.(KafkaSource.java:51)
83位于io.smallrye.reactive.messaging.kafka.KafkaConnector.getPublisherBuilder(KafkaConnector.java:65)
84位于io.smallrye.reactive.messaging.kafka.KafkaConnector\u ClientProxy.getPublisherBuilder(KafkaConnector\u ClientProxy.zig:203)
85位于io.smallrye.reactive.messaging.impl.ConfiguredChannel Factory.createPublisherBuilder(ConfiguredChannel Factory.java:145)
86位于io.smallrye.reactive.messaging.impl.ConfiguredChannel Factory.lambda$寄存器$4(ConfiguredChannel Factory.java:123)
87位于java.util.HashMap.forEach(HashMap.java:1289)
88位于io.smallrye.reactive.messaging.impl.ConfiguredChannel Factory.register(ConfiguredChannel Factory.java:123)
89位于io.smallrye.reactive.messaging.impl.ConfiguredChannel Factory.initialize(ConfiguredChannel Factory.java:118)
90在io.smallrye.reactive.messaging.impl.ConfiguredChannel Factory\u ClientProxy.initialize(ConfiguredChannel Factory\u ClientProxy.zig:195)
91位于java.util.Iterator.ForEachLeving(Iterator.java:116)
92位于java.util.Spliterators$IteratorSpliterator.ForEachLeving(Spliterators.java:1801)
93位于java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
94位于io.smallrye.reactive.messaging.extension.MediatorManager.initializeAndRun(MediatorManager.java:132)
95 at io.smallrye.reactive.messaging.extension.MediatorManager\u ClientProxy.initializeAndRun(MediatorManager\u ClientProxy.zig:100)
96位于io.quarkus.smallrye.reactiveMessagingLifecycle.runtime.SmallRyeReactiveMessagingLifecycle.onApplicationStart(SmallRyeReactiveMessagingLifecycle.java:20)
97在io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle_Observer_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.notify(SmallRyeReactiveMessagingLifecycle_onApplicationStart_4e8937813d9e8faff65c3c07f88fa96615b70e70.zig:51)
98位于io.quarkus.arc.EventImpl$Notifier.notify(EventImpl.java:228)
99 at io.quarkus.arc.EventImpl.fire(EventImpl.java:69)
100在io.quarkus.arc.runtime.LifecycleEventRunner.fireStartupEvent(LifecycleEventRunner.java:23)
101在io.quarkus.arc.runtime.ArcRecorder.handleLifeCycleeEvents(ArcRecorder.java:103)上
102位于io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy_0(LifecycleEventsBuildStep$startupEvent32.zig:77)
103在io.quarkus.deployment.steps.LifecycleEventsBuildStep$startupEvent32.deploy(LifecycleEventsBuildStep$startupEvent32.zig:36)
104在io.quarkus.runner.ApplicationImpl1.doStart(ApplicationImpl1.zig:161)
105位于io.quarkus.runtime.Application.start(Application.java:94)
106位于io.quarkus.runtime.Application.run(Application.java:218)
107在io.quarkus.runner.GeneratedMain.main(GeneratedMain.zig:41)
108原因:io.confluent.common.config.ConfigException:缺少没有默认值的必需配置“schema.registry.url”。
109位于io.confluent.common.config.ConfigDef.parse(ConfigDef.java:251)
110位于io.confluent.common.config.AbstractConfig。(AbstractConfig.java:78)
111位于io.confluent.kafka.serializers.AbstractKafkaAvroSerDeConfig。(AbstractKafkaAvroSerDeConfig.java:105)
112位于io.confluent.kafka.serializers.kafkavrodeserializerconfig.(kafkavrodeserializerconfig.java:41)
113位于io.confluent.kafka.serializers.kafkavrodeserializer.configure(kafkavrodeserializer.java:50)
114位于org.apache.kafka.clients.consumer.KafkaConsumer.(KafkaConsumer.java:713)
115 ... 还有31个
给定格式
mp.messaging.[outgoing|incoming].[channel-name].[attribute]=[value]
和属性schema.registry.url
,您需要以下内容
mp.messaging.incoming.test-quarkustest.connector=smallrye-kafka
mp.messaging.incoming.test-quarkustest.connector=kafkacollectioncomplex
mp.messaging.incoming.test-quarkustest.bootstrap.servers=localhost:9092
# Setup Avro
mp.messaging.incoming.test-quarkustest.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer
mp.messaging.incoming.test-quarkustest.schema.registry.url=http://localhost:8081
在创建新消费者之前,它将在内部调用kafkanconfiguration.put(属性,值)
在任何情况下,
JsonObject
听起来都不是Avro子类,因此您也必须首先更改应用程序代码,value.converter
,它的子属性不是消费者属性,所以我不确定您为什么要尝试它。类似地,value.converter.schemas.enable
对Avro没有任何作用,因为它总是有一个架构,但又不是消费者属性。我尝试了建议的更改,但仍然面临相同的问题(原因是:io.confluent.common.confi)
mp.messaging.[outgoing|incoming].[channel-name].[attribute]=[value]
mp.messaging.incoming.test-quarkustest.connector=smallrye-kafka
mp.messaging.incoming.test-quarkustest.connector=kafkacollectioncomplex
mp.messaging.incoming.test-quarkustest.bootstrap.servers=localhost:9092
# Setup Avro
mp.messaging.incoming.test-quarkustest.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer
mp.messaging.incoming.test-quarkustest.schema.registry.url=http://localhost:8081