0

我已成功使用 Spring Cloud Stream Kafka Binder (org.springframework.cloud:spring-cloud-starter-stream-kafka:3.0.1.RELEASE) 和 Spring Cloud Azure Event Hubs (com.microsoft.azure:spring-cloud-starter -azure-eventhubs:1.2.3) 与 Spring Boot 2.2.6 一起发布和使用来自 Azure 事件中心的消息(启用 Kafka API)。

但是,当我尝试将相同版本的 Spring Cloud 库与 Spring Boot 1.5.22 集成时,我遇到了 java.lang.NoClassDefFoundError: org/springframework/integration/support/converter/ConfigurableCompositeMessageConverter 问题

当我使用 spring-cloud-starter-stream-kafka:1.3.4.RELEASE 和 com.microsoft.azure:spring-cloud-starter-azure-eventhubs:1.1.0 时,我遇到 zookeeper 连接问题可能是由于不同的配置所需的一组属性

2020-04-29 17:01:43.104  INFO 81976 --- [localhost:2181)] [org.apache.zookeeper.ClientCnxn         ] [-] [-] : Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2020-04-29 17:01:43.107  WARN 81976 --- [localhost:2181)] [org.apache.zookeeper.ClientCnxn         ] [-] [-] : Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

    java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)

我的 application.yaml 如下所示

spring:
  cloud:
    azure:
      auto-create-resources: true
      credential-file-path: my.azureauth
      eventhub:
        checkpoint-storage-account: azuremigrationv2
        namespace: somenamespace
      region: Central US
      resource-group: some-rg
    stream:
      bindings:
        consumer:
          destination: event-hub-1
          group: testconsumergroup
          content-type: application/json
          nativeEncoding: true
          consumer:
            concurrency: 1
            valueSerde: JsonSerde
            requeue-rejected: true

我想知道我使用的哪些版本的库与 Spring Boot >= 1.5.20 兼容

4

1 回答 1

0

我的理解是,其中的配置属性spring.cloud.azure 用于依赖项azure-spring-cloud-starter-eventhubs ,而其中的配置属性spring.cloud.stream用于azure-spring-cloud-stream-binder-eventhubs . 我可能错了,但我认为这是正确的。我找不到很好的文档,如果您不知道其中的区别,这会使事情变得非常混乱。它让我浪费了一两天时间做 POC,直到我开始理解它。

注意:配置活页夹时,spring.cloud.stream包含spring.cloud.azure子项。 关联

于 2021-01-29T19:16:51.853 回答