Spring 集成 - 入站与出站通道适配器

Spring Integration - Inbound vs Outbound Channel Adapters

入站和出站通道适配器的根本区别是什么?

任何例子都会很有帮助。

我已经查看了 Spring 文档,但我不清楚这个 "directional" 区别。我支持配置了出站通道适配器的应用程序,但我发现带有 outbound 标签的行为计数器很直观。此适配器获取一个外部文件,然后 将其引入 到我们解析文件并保存数据的应用程序。

这类似于 this 问题,但我想更广泛地关注通道适配器,并希望得到更多反馈!

谢谢!

通道适配器用于单向集成(网关是双向的)。

具体来说,入站适配器在流的开始,出站适配器终止流。流通常被渲染(并且在概念上被认为是从左向右流动)...

inbound-c-a->someComponent->someOtherComponent->outbound-ca

(其中 -> 代表一个频道)。

有两种类型的入站通道适配器:

  • MessageProducers
  • MessageSources

MessageProducers 被称为 "message-driven" 即它们在启动后立即以完全异步的方式单方面生成消息;例如 JMS 消息驱动适配器、TCP 入站通道适配器、IMAP 空闲(邮件)通道适配器等。

另一方面,

MessageSources 被轮询 - poller 和一些触发器导致框架向源请求消息;触发器可以是固定速率、cron 表达式等。示例是 (S)FTP 适配器、邮件入站适配器 (POP3.IMAP)。

出站适配器的示例是邮件出站适配器 (SMTP)。

网关是双向的 (request/reply)。

入站网关是一些外部系统发送请求和 Spring 集成回复的地方。

出站网关是 Spring 集成发出请求和一些外部系统回复的地方。

我希望事情已经解决了。

进出是相对方向,必须有底线。在 spring 集成中,基础是 Spring 集成框架(可以看作消息总线),适配器将消息放入其中,适配器从中取出消息。