如何解决一旦所有SNS订户都收到消息,怎么知道?
比方说,我建立了一个具有3个订阅者的AWS SNS。我想知道何时所有订阅者都接收/处理了该消息,以便将该消息标记为全部3个都已处理,并生成一些度量。 有办法吗?
解决方法
您可以log delivery status for SNS topics to CloudWatch,但只能用于某些类型的消息(AWS无法可靠地知道是否收到了某些消息,例如SMS或电子邮件)。
您可以记录的消息类型为:
- HTTP
- Lambda
- SQS
- 自定义应用程序(必须配置为告知AWS消息已收到)
要在SNS中设置日志记录,请执行以下操作:
- 在SNS控制台中,单击“编辑主题”
- 展开“交货状态记录”
- 然后,您可以配置要记录的协议和必要的权限。
登录到CloudWatch后,您可以从那里绘制指标。
如果需要在订阅者收到消息时得到通知,则可以在cloudwatch中设置subscription filter来将相关的日志事件发送到lambda函数,在该函数中,您将实现自定义逻辑来通知您适当地。
,我的意思是消费者成功处理了
通常,您的消费者必须以某种方式指出这一点。这是用例专用,因此很难推测出确切的解决方案。
但只是举个例子,一个流行的模式是Request-response messaging pattern。在这里,您的使用者将使用SQS队列来发布消息处理的结果。生产者将拉出队列以获取这些消息,随后知道哪些消息已正确处理而哪些消息没有正确处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。