我正在嘗試將XML集成流從XML重寫爲Java。我想發送的通過信道路徑數據:輸出通道路由
@Bean(name = "sendData")
public MessageChannel getSendData() {
return MessageChannels.direct()
.get();
}
到其它兩個通道:這取決於它們的可用性
@Bean(name = "sendDataA")
public MessageChannel getSendDataA() {
return MessageChannels.direct()
.get();
}
@Bean(name = "sendDataB")
public MessageChannel getSendDataB() {
return MessageChannels.direct()
.get();
}
。
我有一個RoundRobinRouter
類,它確定使用哪個輸出通道。它有一個方法route
返回輸出通道的名稱,如:
@Component
class RoundRobinRouter {
public String route(Object payload) {
/* implementation */
}
}
注意route
方法實現不實際使用對象。這是以前放在XML配置:
<int:router method="route" input-channel="sendData"
default-output-channel="sendDataA">
<bean
class="com.example.RoundRobinRouter"/>
</int:router>
我已經使用Java DSL IntegrationFlow
嘗試:
@Bean
@ServiceActivator(inputChannel = "sendData",
outputChannel = "sendDataA")
public IntegrationFlow routeRoundRobin() {
return router -> router.route(roundRobinRouter, "route");
}
但我得到一個錯誤「調度員沒有訂戶」上sendData.send(payload)
通話,顯然是造成:
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(位置8):方法調用:方法配置(com.example.D ataType) 不能在com.example.Integration $$ LAMBDA $1018103616分之1發現型
路由器是我的集成類唯一的拉姆達。