【问题标题】:Usage Class type as a key in Java DSL Payload Type Router使用类类型作为 Java DSL 有效负载类型路由器中的键
【发布时间】:2016-03-07 18:13:08
【问题描述】:

是否可以在Payload Type Router 中指定真正的Java Class 作为键?

目前我必须手动将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")
)
...

【问题讨论】:

    标签: java spring spring-integration


    【解决方案1】:

    嗯,安德烈,这是不可能的。同意。

    同样适用于ErrorMessageExceptionTypeRouter

    一方面,所有路由器都实现MappingMessageRouterManagement,您可以看到只有String 作为密钥有效。

    从另一个角度 - 您始终可以将目标 AbstractMessageRouter 实现 (PayloadTypeRouter) 配置为 @Bean 并从 .route() EIP 方法中引用它。

    最后:随时贡献这些差距:https://github.com/spring-projects/spring-integration-java-dsl/wiki

    我会像 .payloadTypeRoute().errorRoute() 这样称呼他们。

    感谢您指出这一点!

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      相关资源
      最近更新 更多