Spring integration 如何在Spring Integration 5.0.0.M3中按头值路由消息?

Spring integration 如何在Spring Integration 5.0.0.M3中按头值路由消息?,spring-integration,Spring Integration,我曾经在Spring Integration(在5.0.0.M3之前)中通过一个标头(布尔值)值来路由消息,有这样一个流的帮助: 。 路由(新的头值路由器(注册模式头), routerSpec->routerSpec .subFlowMapping(true/*注册*/,, f->f.handle(String.class,/*一些逻辑*/) .subFlowMapping(假/*取消注册*/, f->f.handle(String.class,/*一些其他逻辑*/), endpointSpec

我曾经在Spring Integration(在
5.0.0.M3
之前)中通过一个标头(布尔值)值来路由消息,有这样一个流的帮助:

。
路由(新的头值路由器(注册模式头),
routerSpec->routerSpec
.subFlowMapping(true/*注册*/,,
f->f.handle(String.class,/*一些逻辑*/)
.subFlowMapping(假/*取消注册*/,
f->f.handle(String.class,/*一些其他逻辑*/),
endpointSpec->endpointSpec.id(“注册路由器”))
但是在
5.0.0.M3
中,由于不再存在具有此类签名的
route
方法,该代码变得无效。原因在Java DSL突破性更改一章中有明确说明:

AbstractRouterSpec
现在扩展了
ConsumerEndpointSpec
,而不是
MessageHandlerSpec
以及
integrationflowdefination
类似:…
路由(R路由器、用户路由器配置器、,
消费者端点配置器)

... 已被删除,以支持那些没有
Consumer老实说,
HeaderValueRouter
在添加了SpEL表达式以提供支持后就过时了

因此,我建议您毫不犹豫地为这个用例使用一个简单的表达式:

.route(“标头”)+注册模式标头,
routerSpec->routerSpec
.subFlowMapping(true/*注册*/,,
f->f.handle(String.class,/*一些逻辑*/)
.subFlowMapping(假/*取消注册*/,
f->f.handle(String.class,/*其他一些逻辑*/)
.id(“注册路由器”))

请注意,为什么不再有
endpointSpec
参数了。

谢谢你,阿泰姆!这很有效。我不是斯佩尔的超级粉丝,但似乎我应该改变主意。也许我遇到的变化应该在4.3->5.0迁移指南中得到更详细的解释。好吧,这不是迁移指南的问题。也许我们可以在主要参考手册中提到这一点。如果你强烈认为应该解决这个问题,请提出一个JIRA。谢谢你的建议,但我认为这不是一个广泛存在的问题,所以没有必要把主要参考手册弄乱。