是否可以将真正的 Java Class
指定为 Payload Type Router 中的键?
目前我必须手动从 Class
转换为 String
...
.<Object, String>route(p -> p.getClass().getName(), // transform raw payload to mapping string key
m -> m.suffix("Channel")
// route to path1Channel
.channelMapping(Integer.class.getTypeName(), "path1")
// route to path2Channel
.channelMapping(String.class.getTypeName(), "path2")
// route to path3Channel
.channelMapping(Doulbe.class.getTypeName(), "path3")
)
...
但我希望不那么麻烦
...
.<Object, Class>route(p -> p.getClass(),
m -> m.suffix("Channel")
.channelMapping(Integer.class, "path1")
.channelMapping(String.class, "path2")
.channelMapping(Doulbe.class, "path3")
)
...
甚至像这样
...
.payloadTypeRouter(
m -> m.suffix("Channel")
.channelMapping(Integer.class, "path1")
.channelMapping(String.class, "path2")
.channelMapping(Doulbe.class, "path3")
)
...
最佳答案
好吧,安德烈,这是不可能的。同意。
这对于 ErrorMessageExceptionTypeRouter
也是有效的。
一方面,所有路由器都实现了 MappingMessageRouterManagement
,您可以在其中看到只有 String
作为 key 有效。
从另一个角度 - 您始终可以将目标 AbstractMessageRouter
实现 (PayloadTypeRouter
) 配置为 @Bean
并从 引用它.route()
EIP 方法。
最后:请随意贡献这些差距:https://github.com/spring-projects/spring-integration-java-dsl/wiki
我将它们称为 .payloadTypeRoute()
和 .errorRoute()
。
感谢您指出这一点!
关于java - 使用类类型作为 Java DSL 有效负载类型路由器中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850900/