我正在嘗試連接到 Kafka 代理,該代理強制執行 2 路 SSL/TLS 來驗證和授權客戶端。我已經通過正確的權限創建了證書簽名并存盤在我的本地用戶目錄中。我在用
- Spring-Kafka 2.8.5
- 彈簧啟動 2.6.7
我的application.properties有
spring.kafka.bootstrap-server=vera-kafka-dev.lia.com:49092
spring.kafka.topic=lucija-eliza-topic
spring.kafka.security.protocol=SSL
spring.kafka.ssl.keystore.location=/c/users/sibusiso/certs/my-test-cert.jks
spring.kafka.ssl.keystore.password=mysecretpwd
spring.kafka.ssl.truststore.location=/c/users/sibusiso/certs/my-test-cert.jks
spring.kafka.ssl.truststore.password=mysecretpwd
但是 ProducerConfig 值正在列印
acks= -1
batch.size = 16384
bootstrap.servers = [vera-kafka-dev.lia.com:49092]
buffer.memory = 33554432
...
security.protocol = PLAINTEXT
security.providers = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.3]
ssl.endpoint.identification.algorithm = https
ssl.key.password = null
ssl.keysore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLSv1.3
...
ssl.trustsore.location = null
ssl.truststore.password = null
ssl.truststore.type = JKS
...
所以看看這個輸出,看起來應用程式沒有從 application.properties 檔案中獲取值。顯然與經紀人的連接已斷開。
我錯過了什么嗎?TIA
uj5u.com熱心網友回復:
基本上我同意加里·拉塞爾的評論。您必須要么利用自動配置功能,要么宣告一個KafkaPropertiesbean,或者手動完成所有事情。
關于屬性,名稱似乎存在一些差異。它們最精確的定義/META-INF/spring-configuration-metadata.json在/META-INF/additional-spring-configuration-metadata.jsonjar 檔案中。如果您檢查這些檔案,最重要的是 Spring Boot 的自動配置 jar 中的一個(例如spring-boot-autoconfigure-2.6.7.jar),您會發現檔案中的某些屬性名稱不太正確:
spring.kafka.bootstrap-server應該是spring.kafka.bootstrap-servers復數;spring.kafka.ssl.keystore.location應該是spring.kafka.ssl.key-store-location;spring.kafka.ssl.keystore-location也有效,只是它已被棄用。- 同樣,其余屬性的名稱是:
spring.kafka.ssl.key-store-password、spring.kafka.ssl.trust-store-location和spring.kafka.ssl.trust-store-password。 spring.kfka.topic即使糾正了錯字,我也不確定是什么。您可能需要仔細檢查。
也就是說,顯然你spring.kafka.bootstrap-server以某種方式得到了作業,我無法使用相同版本的庫來重現,所以也許你是手動做的?這樣您就必須手動完成所有操作,例如通過@Value.
此外,如果您想使用檔案系統上的檔案,您需要使用file:協議指定位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/503756.html
