动态消息"路由"模式?



我们正在构建一个使用微服务和 AWS SQS 进行消息传递的应用程序。

我们要求在"最终目标"微服务处理单个消息之前由多个微服务处理。

例如:

  • 微服务 A 生成消息
  • 消息必须由微服务 B 验证
  • 必须使用微服务 C 转换已验证的消息
  • 必须使用微服务 D 将转换后的消息应用于数据存储

是否存在动态(在消息创建时(规定消息队列上侦听器之间的消息流的模式?

似乎使用SQS 无法实现消息的选择性路由,如下面的链接中所述

在 SQS 中查找某些消息

正如您从 SQS 文档 https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/sqs/src/main/java/aws/example/sqs/SendReceiveMessages.java 中看到的那样,您无法添加属性来对消息进行分类,即 SQS 不是为用例构建的

唯一可能的解决方案是对不同类型的消息使用三个不同的队列,并让每个微服务侦听特定类型的消息,这是管道和过滤器设计模式的典型用例

另一方面,如果您考虑构建自己的动态路由队列,请参阅此文档来实现基于内容的路由器,如本企业设计模式文档中所述 https://www.enterpriseintegrationpatterns.com/patterns/messaging/ContentBasedRouter.html

希望对您有所帮助!

最新更新