【问题标题】:Spring Integration - Inbound vs Outbound Channel AdaptersSpring 集成 - 入站与出站通道适配器
【发布时间】:2015-07-11 10:41:11
【问题描述】:

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

任何例子都会很有帮助。

我已经查看了 Spring 文档,但我并不清楚这种“方向性”的区别。我支持一个配置了出站通道适配器的应用程序,但我发现 outbound 标签的行为与直觉相反。此适配器获取一个外部文件,然后将其带入到我们解析文件并保存数据的应用程序中。

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

谢谢!

【问题讨论】:

  • 根据您所说的,您的应用程序似乎使用了与通道适配器不同的出站网关。网关接收消息,执行出站操作(也可以是检索文件)并返回消息。通道适配器只是单向的(无回复)。
  • 它使用通道适配器。我说了什么表示网关?我可以更正我的措辞...您可以在此兄弟问题stackoverflow.com/q/29994253/2860319 中查看配置

标签: java spring spring-integration enterprise-integration


【解决方案1】:

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

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

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

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

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

  • MessageProducers
  • MessageSources

MessageProducers 被称为“消息驱动”,即它们一开始就以完全异步的方式单方面产生消息;例如 JMS 消息驱动适配器、TCP 入站通道适配器、IMAP 空闲(邮件)通道适配器等。

另一方面,MessageSources 被轮询 - 带有一些触发器的 poller 导致框架向源询问消息;触发器可以是固定速率、cron 表达式等。例如 (S)FTP 适配器、邮件入站适配器 (POP3.IMAP)。

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

网关是双向的(请求/回复)。

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

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

我希望这能解决问题。

【讨论】:

  • 如果是这种情况,为什么 amqp 有一个入站和一个出站网关?我正在努力将 pojo 作为网关连接到 amqp 请求/回复队列
  • 是的;我建议您提出一个显示您的代码的新问题。
  • @GaryRussell:你说的网关是双向的。一个简单的回显服务中的服务器会被认为是双向的吗?换句话说,在我的简单回显示例stackoverflow.com/q/55154418/1185845 中,您会建议在客户端 服务器端都使用网关吗?不需要适配器?
  • 是的;任何请求/回复都是网关;您可以使用适配器来触发并忘记或接收和发送不回复,或者您可以使用协作适配器进行请求/回复,如文档中所述。我用一些示例代码回答了你的问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2023-03-21
    • 2011-08-29
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多