java - 使用类类型作为 Java DSL 有效负载类型路由器中的键

标签 java spring spring-integration

是否可以将真正的 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/

相关文章:

java - CursorLoader 通知数据变化

java - 如何使用空行跳出 while 循环?

java - 私有(private)方法 'method' 从未使用过 Sonar 错误违规

java - 如何使这段代码更简洁?

java - 在 Spring 中使用 Java 驱动程序的无尽 MongoDB ReplicaSetStatus 更新程序异常

java - Spring Integration http-outbound-gateway 用于 xml web 服务不返回响应数据

java - spring-data-cassandra 未找到 UserDefinedType

用于基于 JSON 的 Web 服务的 Java 框架

java - 在 Spring Integration 中为 Redis 创建 MessageSource

java - 如何识别一组消息何时已送达