我们正在使用微服务和AWS SQS构建用于消息传递的应用程序。
我们要求在“最终目的地”微服务中处理单个消息之前,必须先将多个微服务处理该消息。
例如:
是否有一种模式(在消息创建时)动态地规定消息队列中侦听器之间的消息流?
答案 0 :(得分:2)
似乎SQS无法实现消息的选择性路由,如下面的链接所述
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
中讨论的基于内容的路由器。希望有帮助!