【问题标题】:Multiple @ServiceActivator methods with an implicit payload-type-routing具有隐式有效负载类型路由的多个 @ServiceActivator 方法
【发布时间】:2014-09-25 09:42:16
【问题描述】:

是否有一种优雅的方式来定义具有多个 @ServiceActivator 方法(或类似方法)的单个 @MessageEndpoint bean,其中方法的参数类型被隐式用作有效负载类型过滤器?

这个想法是有一个单一的服务端点,它可以通过对参数类型进行分派而无需太多努力地处理略有不同的不同有效负载类型,从而减轻后续额外服务方法的实现。

我知道 Google Guava 的 EventBus,它将事件对象分派到具有匹配参数类型的任何已注册 @Subscribe 方法。我目前正在使用这种方法,但我想知道这是否也(有点)可以通过 Spring Integration 实现。

【问题讨论】:

  • 到目前为止,您需要一个基于内容的路由器。目前尚不清楚您的建议是否是一个很好的通用规则;如果我想将消息传递到多个端点怎么办?
  • 为了将其交付到多个端点,您只需定义多个端点。没有人阻止你...... :)

标签: java spring spring-integration dynamic-dispatch


【解决方案1】:

在 XML 中,只要没有歧义,<service-activator ... ref="foo" />(没有 method)将解析为基于有效负载类型的方法。

使用 4.0 或更高版本,您可以使用...

@Bean
@ServiceActivator(...)
public MessageHandler foo() {
    ...
}

返回一个 ServiceHandlingFactoryBean 并将 targetObject 设置为您的 POJO(同样,没有方法名称)。

注意,在这种情况下,您必须在工厂 bean 上设置 outputChannel(注释上的 outputChannel 属性被忽略)。

【讨论】:

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