Spring integration 相同的通道用于不同的方法

Spring integration 相同的通道用于不同的方法,spring-integration,Spring Integration,是否可以使用多方法接口作为只有一个通道的网关 我使用SpringIntegration4.1.2.0版本 不同的方法在其他服务器上调用不同的API方法 我的配置/源代码如下所示: 网关: @MessagingGateway 公共接口测试服务 { @网关(requestChannel=“testRequestChannel”) 公共测试findTestById(字符串测试); @网关(requestChannel=“testRequestChannel”) 公共列表getTests(); ……还有

是否可以使用多方法接口作为只有一个通道的网关

我使用SpringIntegration4.1.2.0版本

不同的方法在其他服务器上调用不同的API方法

我的配置/源代码如下所示:

网关:

@MessagingGateway
公共接口测试服务
{
@网关(requestChannel=“testRequestChannel”)
公共测试findTestById(字符串测试);
@网关(requestChannel=“testRequestChannel”)
公共列表getTests();
……还有很多方法。。。。
}
服务Impl:

@MessageEndpoint
公共类TestServiceImpl
{
@ServiceActivator(inputChannel=“testRequestChannel”)
公共测试findTestById(字符串测试)
{
...
}
@ServiceActivator(inputChannel=“testRequestChannel”)
公共列表getTests(字符串测试)
{
...
}
}
模型:

@服务
公共类测试模型
{
@自动连线
私有测试服务测试服务;
公共测试findTestById(字符串测试)
{
返回这个.testService.findTestById(test);
}
}
谢谢


马塞尔不,你不能那样做;将两个服务订阅到同一个通道意味着(默认情况下)该通道上的请求将依次循环调度到这些方法


既然您是通过网关启动流程,为什么不为每个网关使用单独的通道?

我有一个具有多种方法的接口。对我来说,为每个方法创建一个通道听起来很可怕。。。对于我的问题,还有其他解决方案吗(像网关一样简单)?您不必声明通道,只需给它们指定不独特的名称即可。该框架将创建默认声明。您对消息传递原则有点误解。
频道是一等公民频道。他的目标是从制作人那里接收消息并将其发送给订阅者。请阅读这本书,了解理论。您可以仅使用单通道来完成此操作,但在这种情况下,您应该在其上放置一个路由器,并使用
#gatewayMethod
SpEL变量来填充要用作该路由器中路由密钥的消息头。但无论如何,您必须在下游提供通道。或对所有情况使用单一服务。framewrok就是这样工作的!