不支持发送,因为没有配置请求通道

send is not supported, because no request channel has been configured

我正在尝试配置与网关的集成流程。在 kotlin 上使用 Java DSL。

网关配置:

@MessagingGateway(name = "tdiOutSenderGateway")
interface TdiOutSenderGateway {
    fun send(packet: PhasorEnricher.Packet)
}

流量配置:

@Bean
open fun tdiOutSendFlow() = IntegrationFlows
    .from(TdiOutSenderGateway::class.java)
    .transform(tdiOutSenderRouter())
    .get()!!

得到send is not supported, because no request channel has been configured 文档:将自动配置请求通道。

我是否遗漏了任何其他设置?

  1. 当然transform应该return的东西,应该有route或者handle.

  2. 但即使我修复了 #1,我也遇到了这个问题:Void kotlin 函数 return Unit。 Spring 集成检查 Unit == nullfalse,尝试找到下一个频道并抛出错误。解决方法是明确使用 kotlin lambda 和 return null

  3. 在使用 Spring Integration 和 kotlin 这 8 个月后,我决定尝试为 Spring Integration (https://github.com/spring-projects/spring-integration/issues/3016) 创建 Kotlin DSL

Kotlin 单位:https://kotlinlang.org/docs/reference/functions.html#unit-returning-functions


P.S.: 当然早点解决了,不是8个月后。