一旦所有SNS订户都收到消息,怎么知道?

问题描述

比方说,我建立了一个具有3个订阅者的AWS SNS。我想知道何时所有订阅者都接收/处理了该消息,以便将该消息标记为全部3个都已处理,并生成一些度量。 有办法吗?

解决方法

您可以log delivery status for SNS topics to CloudWatch,但只能用于某些类型的消息(AWS无法可靠地知道是否收到了某些消息,例如SMS或电子邮件)。

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

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

要在SNS中设置日志记录,请执行以下操作:

  1. 在SNS控制台中,单击“编辑主题”
  2. 展开“交货状态记录”
  3. 然后,您可以配置要记录的协议和必要的权限。

登录到CloudWatch后,您可以从那里绘制指标。

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

,

我的意思是消费者成功处理了

通常,您的消费者必须以某种方式指出这一点。这是用例专用,因此很难推测出确切的解决方案。

但只是举个例子,一个流行的模式是Request-response messaging pattern。在这里,您的使用者将使用SQS队列来发布消息处理的结果。生产者将拉出队列以获取这些消息,随后知道哪些消息已正确处理而哪些消息没有正确处理。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...