具有微服务的拆分器聚合器模式
splitter aggregator pattern with microservices
我需要创建一个执行以下操作的系统:
- 通过 http multipart 请求接收上传的文件 - return 200 ok 成功后
- 将上传的文件传递给多个外部服务
- 等待外部服务的所有结果,并计算最终响应
- return 作为发布者对 activemq 的响应
有一些限制条件:
这些外部服务是第 3 方公司的服务,因此其中一些可能使用不同的 apis/protocols。
我希望能够在 运行 时插入和拔出第 3 方供应商。
- 能够支持扩展同一供应商的多个实例以提高性能
到目前为止我的思维过程:
- 使用 spring-integration 或 apache camel 作为拆分器-聚合器模式模块
- 每个第 3 方供应商将是一个独立的 spring 引导应用程序
- 应用程序的入口点将是另一个 spring 启动应用程序
我有一些悬而未决的问题
我仍然不知道在不同服务之间传递文件的最佳方式是什么?通过消息队列?只是将请求代理到多个微服务?
如何支持运行时间插拔?
任何指点或帮助都会很有帮助!
确实像Scatter-Gather。
您有 PublishSubscribeChannel
并且可以在 运行 时为其添加和删除订阅者。
关于 plug & unplug
问题,您可以查看 Spring 集成 Java DSL 1.2 中最近的 IntegrationContext
功能。
我需要创建一个执行以下操作的系统:
- 通过 http multipart 请求接收上传的文件 - return 200 ok 成功后
- 将上传的文件传递给多个外部服务
- 等待外部服务的所有结果,并计算最终响应
- return 作为发布者对 activemq 的响应
有一些限制条件:
这些外部服务是第 3 方公司的服务,因此其中一些可能使用不同的 apis/protocols。
我希望能够在 运行 时插入和拔出第 3 方供应商。
- 能够支持扩展同一供应商的多个实例以提高性能
到目前为止我的思维过程:
- 使用 spring-integration 或 apache camel 作为拆分器-聚合器模式模块
- 每个第 3 方供应商将是一个独立的 spring 引导应用程序
- 应用程序的入口点将是另一个 spring 启动应用程序
我有一些悬而未决的问题
我仍然不知道在不同服务之间传递文件的最佳方式是什么?通过消息队列?只是将请求代理到多个微服务?
如何支持运行时间插拔?
任何指点或帮助都会很有帮助!
确实像Scatter-Gather。
您有 PublishSubscribeChannel
并且可以在 运行 时为其添加和删除订阅者。
关于 plug & unplug
问题,您可以查看 Spring 集成 Java DSL 1.2 中最近的 IntegrationContext
功能。