Spring 引导:Spring Cloud Stream Kafka 实现

Spring Boot: Spring Cloud Stream Kafka implementation

这似乎是非常简单的实现,只有 2 个特定于云流项目的库,但我得到了
java.lang.ClassNotFoundException: org.springframework.integration.support.converter.ConfigurableCompositeMessageConverter

项目中的所有依赖为:

compile(
    "org.springframework.boot:spring-boot-starter-web", 
    "org.springframework.boot:spring-boot-starter-actuator",
    "org.springframework.boot:spring-boot-starter-data-rest",
    "org.springframework.boot:spring-boot-starter-data-jpa",
    "org.springframework.boot:spring-boot-starter-security",
    "org.springframework.boot:spring-boot-starter-amqp",
    "org.springframework.cloud:spring-cloud-stream",
    "org.springframework.cloud:spring-cloud-starter-stream-kafka",
    "org.postgresql:postgresql:9.4.1212.jre7",
    "org.projectlombok:lombok:1.16.14",
    "io.jsonwebtoken:jjwt:0.7.0",
    "org.flywaydb:flyway-core:4.2.0"
    )

云流配置:

spring.application.name=services
spring.stream.bindings.output.destination=appTopic
spring.stream.bindings.output.content-type=application/json
spring.stream.bindings.kafka.binder.zkNodes=${HOST}
spring.stream.bindings.kafka.binder.brokers=${HOST}

完成build.gradle:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE")
        classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.2.0"
        classpath "io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE"
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'org.flywaydb.flyway'
apply plugin: "io.spring.dependency-management"

ext {
    springBootVersion = '1.5.2.RELEASE'
}

jar {
    baseName = 'rest'
    version = '0.1'
}

repositories {
    mavenCentral()
}

dependencyManagement {
     imports {
          mavenBom 'org.springframework.cloud:spring-cloud-stream-dependencies:Elmhurst.BUILD-SNAPSHOT'
     }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile(
    "org.springframework.boot:spring-boot-starter-web", 
    "org.springframework.boot:spring-boot-starter-actuator",
    "org.springframework.boot:spring-boot-starter-data-rest",
    "org.springframework.boot:spring-boot-starter-data-jpa",
    "org.springframework.boot:spring-boot-starter-security",
    "org.springframework.boot:spring-boot-starter-amqp",
    "org.springframework.cloud:spring-cloud-stream",
    "org.springframework.cloud:spring-cloud-starter-stream-kafka",
    "org.springframework.integration:spring-integration-core",
    "org.postgresql:postgresql:9.4.1212.jre7",
    "org.projectlombok:lombok:1.16.14",
    "io.jsonwebtoken:jjwt:0.7.0",
    "org.flywaydb:flyway-core:4.2.0"
    )
    testCompile(
    "org.springframework.boot:spring-boot-starter-test",
    "com.jayway.jsonpath:json-path",
    "org.flywaydb.flyway-test-extensions:flyway-spring-test:4.2.0",
    "io.rest-assured:rest-assured:3.0.3"
    )
}
repositories {
    maven {
        url 'https://repo.spring.io/libs-snapshot'
    }
}

org.springframework.integration.support.converter.ConfigurableCompositeMessageConverter 来自 Spring 整合 5.0:

/**
 * A {@link CompositeMessageConverter} extension with some default {@link MessageConverter}s
 * which can be overridden with the given converters
 * or added in the end of target {@code converters} collection.
 * <p>
 * The default converts are (declared exactly in this order):
 * <ul>
 *  <li> {@link MappingJackson2MessageConverter} if Jackson processor is present in classpath;
 *  <li> {@link ByteArrayMessageConverter}
 *  <li> {@link ObjectStringMessageConverter}
 *  <li> {@link GenericMessageConverter}
 * </ul>
 *
 * @author Artem Bilan
 *
 * @since 5.0
 */
public class ConfigurableCompositeMessageConverter extends CompositeMessageConverter {

您应该确保在您的应用程序中使用兼容的版本。

您的版本似乎不匹配 ConfigurableCompositeMessageConverter 是 Spring Integration 5.0 中的新 class。

您使用的是什么启动版本?什么 spring-cloud-stream 版本?

Spring Cloud Stream 当前与 Spring Boot 2.0 快照不兼容(如果您使用的是它)。