【问题标题】:What is service activator component in spring integration?Spring集成中的服务激活器组件是什么?
【发布时间】:2019-12-28 22:10:38
【问题描述】:

我正在学习 spring 集成阅读/观看不同的东西,但我不明白什么是服务激活器。

我了解有两种类型的集成:
香奈儿和网关。 chanel 是单向集成,但 gateways 是请求/回复模型。网关可以是入站(我们的系统获取请求并发送响应)和出站(我们的系统发送请求并接收响应)

当我阅读网关时,我经常看到术语“服务激活器”

你能解释一下这是什么意思吗?

【问题讨论】:

标签: java spring spring-integration enterprise-integration


【解决方案1】:

服务激活器是对 bean 中方法的调用。

<service-activator ref="myService" method="aMethod"/>

会打电话

@Service
public class MyService {
    public A aMethod(@Header(value = "param1") String param){
        //code
    }
}

@Header 注释允许在标头中使用现有值。这是一个例子。

你也可以这样使用:

<service-activator expression="@myService.aMethod('My param')"/>

【讨论】:

  • 能否阐明服务激活器与网关的关系?
【解决方案2】:

outbound gateway 本质上是用于请求/回复场景的 service activator 抽象的特殊情况。另一种情况是outbound channel adapter,它是单向的,但仍然可以被视为service activator,因为当我们向其inputChannel发送消息时,我们将调用一些代码——我们可以将其视为一项服务。因此激活它。

一个通用组件service activator 存在于特定实现未涵盖的所有用例中。让我们想象一下您需要调用一些 REST 服务。是的,您可以使用带有一些特定选项的 HTTP 出站网关。或者您可以编写一些使用RestTemplate 调用该服务的自定义代码。您将代码包装到 service activator 配置中,最终会得到整个集成解决方案的相同行为。

【讨论】:

  • 所以服务激活器是一种绑定spring集成基础设施和我们自定义代码的方式。对吗?
  • 是的。这是正确的。虽然网关也是如此,但正如我所说,它们只是特定情况下的服务激活器实现。