动态消息 "routing" 模式?

Dynamic message "routing" pattern?

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

我们要求单个消息在 "final destination" 微服务处理之前由多个微服务处理。

例如:

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

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

Finding certain messages in 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

希望对您有所帮助!