【发布时间】:2020-03-22 23:13:40
【问题描述】:
我们正在引入 SNS + SQS 来处理我们的微服务架构中的事件生成和传播,到目前为止,该架构一直依赖 HTTPS 调用来相互通信。我们正在考虑将多个 SQS 队列连接到一个 SNS 主题。然后,队列中的事件将由 lambda 或 EC2 中运行的服务使用。
我的问题是,主题应该有多通用?我们什么时候应该创建新主题?
假设我们有一个用户域需要发布两个事件——创建和删除。我们正在考虑的两个选项是:
选项 A:有两个主题,“用户创建”和“用户删除”。每个主题保证一个事件类型。
- 消费者不必担心丢弃他们不感兴趣的事件,因为他们知道来自“用户创建”主题的消息仅与用户创建有关。
- 将代码的多个不同部分发布到同一主题
选项 B:有一个主题“用户”,可以接受多种事件类型
消费者将承担过滤事件或根据事件类型采取不同操作的额外责任(他们还可以配置其队列订阅以过滤某些事件类型)
可以保证每个主题只有一个发布者
是否有人对其中任何一个选项都有强烈的偏好,为什么会这样?
在相关说明中,您会在哪里包含每个资源的云配置? (队列资源创建应该与消费者一起部署,还是应该独立于任何发布者/消费者而存在?)
【问题讨论】:
标签: events amazon-sqs amazon-sns event-driven