具有微服务的拆分器聚合器模式

splitter aggregator pattern with microservices

我需要创建一个执行以下操作的系统:

  1. 通过 http multipart 请求接收上传的文件 - return 200 ok 成功后
  2. 将上传的文件传递给多个外部服务
  3. 等待外部服务的所有结果,并计算最终响应
  4. return 作为发布者对 activemq 的响应

有一些限制条件:

  1. 这些外部服务是第 3 方公司的服务,因此其中一些可能使用不同的 apis/protocols。

  2. 我希望能够在 运行 时插入和拔出第 3 方供应商。

  3. 能够支持扩展同一供应商的多个实例以提高性能

到目前为止我的思维过程:

  1. 使用 spring-integration 或 apache camel 作为拆分器-聚合器模式模块
  2. 每个第 3 方供应商将是一个独立的 spring 引导应用程序
  3. 应用程序的入口点将是另一个 spring 启动应用程序

我有一些悬而未决的问题

  1. 我仍然不知道在不同服务之间传递文件的最佳方式是什么?通过消息队列?只是将请求代理到多个微服务?

  2. 如何支持运行时间插拔?

任何指点或帮助都会很有帮助!

确实像Scatter-Gather

您有 PublishSubscribeChannel 并且可以在 运行 时为其添加和删除订阅者。

关于 plug & unplug 问题,您可以查看 Spring 集成 Java DSL 1.2 中最近的 IntegrationContext 功能。