根据消息标识符将单个SQS用于多个订户

时间:2019-01-12 12:20:29

标签: publish-subscribe amazon-sqs

我们有一个应用程序,其中有多个订阅者正在向发布者Kafka主题写入数据,然后将这些数据传播到特定的订阅者主题,然后订阅者会使用分配给它的特定主题中的数据。

我们想将SQS用于相同的目的,但是问题是我们将再次为每个订户需要一个SQS。 处理这些多个SQS会产生问题,如果有一段时间没有任何数据发布给订阅者,则分配给它的队列将处于空闲状态。

我有什么方法可以使用单个SQS,所有订阅者都可以从该消息中使用基于don消息标识符的消息。 此设计中需要涵盖的挑战是:

  1. 每个订户都可以基于标识符获取其消息
  2. 如果一个发布者发布的邮件很少,而另一个发布者却发布了数百万条邮件,则不得存在延迟。
  3. 我们可以为每个发布者提供一个SQS,但为该发布者的所有订阅者提供一个SQS。

任何人都可以使用类似的实现建议任何体系结构。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您可以通过设置一个SQS队列来实现。您可能想在将用作服务管理器(SM)的队列上set up a Lambda trigger。 SM将具有一个静态JSON文件,该文件定义消息标识符与其subscriber/worker之间的映射。 SM将收到一个SQS消息事件,找到用于标识符的消息属性,然后在JSON中查找以找到相应的订户。如果找到订户,SM将调用它。

考虑使用SQS批处理触发器。

enter image description here