我有使用 spring-kafka 和 kafka-streams 的 Java Spring-boot 应用程序。 我正在尝试使用
构建 GraalVM 本机映像 mvn -Pnative spring-boot:build-image
构建成功,但是当我尝试在 docker 中运行图像时,出现异常:
Caused by: org.apache.kafka.common.config.ConfigException: Invalid value org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier for configuration default.client.supplier: Class org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier could not be found.
at org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:747)
at org.apache.kafka.common.config.ConfigDef$ConfigKey.<init>(ConfigDef.java:1175)
at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:155)
at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:175)
at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:214)
at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:376)
at org.apache.kafka.common.config.ConfigDef.define(ConfigDef.java:389)
at org.apache.kafka.streams.StreamsConfig.<clinit>(StreamsConfig.java:1008)
... 16 common frames omitted
卡夫卡配置:
spring:
kafka:
producer:
value-serializer: "org.springframework.kafka.support.serializer.JsonSerializer"
properties:
spring:
json:
type:
mapping: "ErrorReportDomain:com.kt.kafka.messagingprocessor.domain.ErrorReportDomain"
client-id: messaging-processor
bootstrap-servers:
- "XXX"
security:
protocol: SASL_PLAINTEXT
properties:
sasl:
mechanism: SCRAM-SHA-512
jaas:
config: org.apache.kafka.common.security.scram.ScramLoginModule required username="XXX" password="XXX";
streams:
application.id: messaging-processor
properties:
spring:
json:
trusted:
packages: '*'
default:
key:
serde: org.apache.kafka.common.serialization.Serdes$StringSerde
value:
serde: org.springframework.kafka.support.serializer.JsonSerde
请问有什么建议吗?
我们最近将 Kafka Streams 提示添加到 GraalVM 可访问性元数据中:https://github.com/oracle/graalvm-reachability-metadata/pull/422。
但显然还没有发布。
因此,要使其在您的应用程序中运行,您需要手动提供这些提示。
看起来您没有使用Spring Cloud Stream,所以我建议将此类复制/粘贴到您的项目中:https://github.com/spring-cloud/spring-cloud-stream/blob/main/binders /kafka-binder/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/aot/KafkaStreamsBinderRuntimeHints.java
可能需要进行一些修改,删除 Spring Cloud Stream 特定条目。
查看更多有关手动提示注册的文档:https://docs.spring.io/spring-framework/reference/core/aot.html#aot.hints