Java Spring云流-依赖性问题
我试图在我的下游主题上生成一个avro字节流,如下所示:Java Spring云流-依赖性问题,java,spring-boot,gradle,apache-kafka,spring-cloud-stream,Java,Spring Boot,Gradle,Apache Kafka,Spring Cloud Stream,我试图在我的下游主题上生成一个avro字节流,如下所示: producer.produce(mapper.writeValueAsString(obj).getBytes()); 我目前收到这个错误 org.apache.kafka.common.KafkaException: Failed to construct kafka producer at org.apache.kafka.clients.producer.KafkaProducer.<init>(Kafka
producer.produce(mapper.writeValueAsString(obj).getBytes());
我目前收到这个错误
org.apache.kafka.common.KafkaException: Failed to construct kafka producer
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:433) ~[kafka-clients-2.3.1.jar:na]
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:287) ~[kafka-clients-2.3.1.jar:na]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createRawProducer(DefaultKafkaProducerFactory.java:519) ~[spring-kafka-2.3.8.RELEASE.jar:2.3.8.RELEASE]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createKafkaProducer(DefaultKafkaProducerFactory.java:420) ~[spring-kafka-2.3.8.RELEASE.jar:2.3.8.RELEASE]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:407) ~[spring-kafka-2.3.8.RELEASE.jar:2.3.8.RELEASE]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createProducer(DefaultKafkaProducerFactory.java:374) ~[spring-kafka-2.3.8.RELEASE.jar:2.3.8.RELEASE]
at org.springframework.cloud.stream.binder.kafka.KafkaMessageChannelBinder.lambda$createProducerMessageHandler$0(KafkaMessageChannelBinder.java:356) ~[spring-cloud-stream-binder-kafka-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.lambda$getPartitionsForTopic$2(KafkaTopicProvisioner.java:472) ~[spring-cloud-stream-binder-kafka-core-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:287) ~[spring-retry-1.2.5.RELEASE.jar:na]
at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:164) ~[spring-retry-1.2.5.RELEASE.jar:na]
at org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.getPartitionsForTopic(KafkaTopicProvisioner.java:467) ~[spring-cloud-stream-binder-kafka-core-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.kafka.KafkaMessageChannelBinder.createProducerMessageHandler(KafkaMessageChannelBinder.java:354) ~[spring-cloud-stream-binder-kafka-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.kafka.KafkaMessageChannelBinder.createProducerMessageHandler(KafkaMessageChannelBinder.java:150) ~[spring-cloud-stream-binder-kafka-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindProducer(AbstractMessageChannelBinder.java:225) ~[spring-cloud-stream-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindProducer(AbstractMessageChannelBinder.java:90) ~[spring-cloud-stream-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binder.AbstractBinder.bindProducer(AbstractBinder.java:152) ~[spring-cloud-stream-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.cloud.stream.binding.BindingService.lambda$rescheduleProducerBinding$2(BindingService.java:319) ~[spring-cloud-stream-3.0.4.RELEASE.jar:3.0.4.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_261]
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) ~[na:1.8.0_261]
at java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:1.8.0_261]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_261]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_261]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_261]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_261]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_261]
Caused by: org.apache.kafka.common.KafkaException: Could not instantiate class io.confluent.kafka.serializers.KafkaAvroSerializer
at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:325) ~[kafka-clients-2.3.1.jar:na]
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:370) ~[kafka-clients-2.3.1.jar:na]
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:368) ~[kafka-clients-2.3.1.jar:na]
... 25 common frames omitted
Caused by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_261]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_261]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_261]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_261]
at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:321) ~[kafka-clients-2.3.1.jar:na]
... 27 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/apache/avro/io/EncoderFactory
at io.confluent.kafka.serializers.AbstractKafkaAvroSerializer.<init>(AbstractKafkaAvroSerializer.java:39) ~[kafka-avro-serializer-5.4.1.jar:na]
at io.confluent.kafka.serializers.KafkaAvroSerializer.<init>(KafkaAvroSerializer.java:32) ~[kafka-avro-serializer-5.4.1.jar:na]
... 32 common frames omitted
渠道
@Output(ChannelsExtractor.MY.CHANNEL)
MessageChannel outbound();
格雷德尔先生
// in plugins
id 'org.springframework.boot' version '2.2.7.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
// in dependencies
implementation "io.confluent:kafka-avro-serializer:5.4.1"
implementation "io.confluent:kafka-schema-registry-client:5.4.1"
implementation "io.confluent:common-config:5.4.1"
implementation "io.confluent:common-utils:5.4.1.0"
// Possibly here?
runtimeOnly 'io.pivotal.spring.cloud:spring-cloud-services-dependencies:2.1.2.RELEASE'
runtimeOnly 'io.pivotal.spring.cloud:spring-cloud-services-starter-config-client:2.1.2.RELEASE'
看起来您正在使用不兼容的avro库。这就是
EncoderFactory
的来源。下面是一个示例应用程序,它显示了与avro+合流序列化程序的某种程度的交互:您可能需要根据您的用例调整该示例。它还使用了更高版本的Spring Boot。我希望您在application.properties或application.yml中有关于目标和源的必要配置?@chetank是否配置了目标?源是什么意思?Spring.cloud.stream.function.definition=supplier;接收和转发;接收spring.cloud.stream.kafka.binder.configuration.schema.registry.url=spring.cloud.stream.bindings.supplier-out-0.destination=sensor-1
// in plugins
id 'org.springframework.boot' version '2.2.7.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
// in dependencies
implementation "io.confluent:kafka-avro-serializer:5.4.1"
implementation "io.confluent:kafka-schema-registry-client:5.4.1"
implementation "io.confluent:common-config:5.4.1"
implementation "io.confluent:common-utils:5.4.1.0"
// Possibly here?
runtimeOnly 'io.pivotal.spring.cloud:spring-cloud-services-dependencies:2.1.2.RELEASE'
runtimeOnly 'io.pivotal.spring.cloud:spring-cloud-services-starter-config-client:2.1.2.RELEASE'