amazon-web-services - AWS 中长期运行的订阅后台服务的最佳位置
问题描述
我目前正在尝试在 AWS 中建立一个利用 EventSourcing 和 CQRS 的系统。我已经在命令端完成了所有工作,并将事件存储到 Aurora 中。我有 SqlEventStore 作为我的 EventSourcing 存储,它有一个订阅机制,它将监听新事件,然后适当地触发一个函数。
到目前为止,这一切都在 Lambda 中设置,但我不能在 Lambda 中订阅,因为它们并不总是在运行,所以我的第一个想法是在 Fargate 和 docker 容器中运行这一端。不过,根据我的阅读,这似乎需要由任务触发,而不是坐在订阅的容器中。
所以我的问题实际上是,在 AWS 中哪里最好有一个长时间运行的进程,它只是坐下来监听事情的发生,而不是响应来自 Lambda 之类的刺激。
解决方案
所以我的问题实际上是,在 AWS 中哪里最好有一个长时间运行的进程,它只是坐下来监听事情的发生,而不是响应来自 Lambda 之类的刺激。
我会建议使用Fargate或 EC2 类型的 ECS 容器,使用 Fargate 你不需要管理服务器,类似于 lambda 但更适合这种长时间运行的进程。
这似乎需要由任务触发,而不是坐在订阅的容器中。
不,您可以通过两种方式运行 fargate。
- 作为长期运行的服务运行
- 基于云监视事件或计划时间的消防服务(执行任务并终止)
AWS Fargate 现在支持定期运行任务并响应 CloudWatch Events 的能力。这使得启动和停止只需要在特定时间运行的容器服务变得更加容易。
在 AWS 中最好有一个长期运行的流程,它只是坐下来监听事情的发生,而不是响应来自 Lambda 之类的事件
- 如果您的任务应该运行很长时间,那么 lambda 不适合您,在 lambda 的情况下总是会超时。
- 如果您不想管理服务器,并且该进程应该运行很长时间,那么 fargate 适合您,那么坐下来听听就可以了。
推荐阅读
- swift - 如何删除 tableView 单元格并从 firebase 中删除数据
- python - 如何对 Pandas 系列中的行求和?
- rust - 避免共享静态变量的“同步”
- java - 如何在 Junit 5 中使用 CsvFileSource 转义参数化测试中的双引号
- dataframe - 将 pyspark 数据帧值转换为可变字符串值
- java - 切换日/夜模式时如何为组件(工具栏、搜索栏、操作栏等)设置自定义颜色?
- nhibernate - 在字符串属性上搜索不等式
- reactjs - 如何使用 springboot 和 reactjs 正确配置 websocket?
- sql - SQL - 如何在一年中的每个日期按年龄和状态对项目进行分组/计数?
- android - 每次退出应用程序后,用户都会重复相同的通知