一旦所有SNS用户都收到消息,如何知道



假设我已经建立了一个有3个订阅者的AWS SNS。我想知道所有订阅者何时接收/处理该消息,以便将该消息标记为已由所有3个订阅者处理,并生成一些度量。有办法做到这一点吗?

您可以将SNS主题的交付状态记录到CloudWatch,但仅限于某些类型的消息(AWS无法可靠地知道是否收到了某些消息,例如短信或电子邮件(。

您可以记录的消息类型有:

  • HTTP
  • Lambda
  • SQS
  • 自定义应用程序(必须配置为告知AWS已收到消息(

要在SNS中设置日志记录:

  1. 在SNS控制台中,单击";编辑主题">
  2. 展开";传送状态记录">
  3. 然后,您可以配置要登录的协议以及登录所需的权限

一旦您登录到CloudWatch,就可以从中提取指标。

如果您需要在订阅者收到消息时得到通知,您可以在cloudwatch中设置一个订阅过滤器,将相关的日志事件发送到lambda函数,在该函数中您将实现自定义逻辑来适当地通知您。

我指的是消费者成功处理

通常你的消费者必须以某种方式表明这一点。这是特定于用例的,因此很难推测确切的解决方案。

但为了举一个例子,一种流行的模式是请求-响应消息传递模式。在这里,您的消费者将使用一个SQS队列来发布消息处理的结果。生产者会拉取队列来获取这些消息,然后知道哪些消息被正确处理,哪些消息没有被正确处理。

相关内容

最新更新