如何解决如何在客户端应用程序中订阅 AWS Event Bus 事件
如何从客户端应用程序订阅 AWS Event Bus 事件,例如:NodeJS 应用程序、Angular 客户端或移动客户端应用程序?
2020 年 12 月,来自 AWS Marketing 的一封电子邮件介绍了使用事件驱动架构的优势。按照文档和教程,很快我就发现找不到从客户端应用程序订阅此事件的方法。
电子邮件指出:
关注事件驱动架构的 4 个理由
您是否希望在没有延迟和依赖的情况下扩展和构建强大的应用程序?我们分解了事件驱动架构的基础知识及其工作原理,并向您展示了入门方法。了解事件驱动的架构如何为您提供帮助:
- 独立扩展和失败 - 不再依赖
- 敏捷开发 - 无自定义轮询代码
- 轻松审核 - 使用事件路由器定义策略
- 削减成本 - 停止为连续投票付费
令人失望的部分是,没有将库示例集成到客户端代码中以订阅这些事件。谷歌搜索不会返回任何重要的结果和节点的唯一当前库:@aws-sdk/client-eventbridge-node 只公开发送和销毁方法。
解决方法
无法直接订阅 Amazon EventBridge 总线,因为它不提供发布/订阅功能。为了处理 EventBridge 中的事件,您create event rules 可以过滤匹配事件并将其发送到目标。您可以在此列表中找到 EventBridge 规则可用的所有目标:Amazon EventBridge Targets。
其中一个目标可能是 Amazon SNS 主题,它提供发布/订阅功能,即您的客户端应用程序可以subscribe to the topic自动接收相应的事件。
这听起来可能很复杂,但其实现严格遵循分离关注点的原则。它提供了简单的构建块(例如乐高积木),您可以将它们组合在一起以创建真正松散耦合的架构。
This diagram 展示了 Amazon Event Bridge 范围内的功能以及它如何与其他服务和应用程序通信。
,允许您根据需要订阅(通过 websocket 等 tcp 连接直接将订阅的消息传递给您的代码)的服务是:
- AppSync - websocket
- 物联网核心 - websocket、mqtt
- SQS - 长轮询
- 卡夫卡
(来自我的头顶)
因此,一个简单的无服务器解决方案可能是:
事件桥接 —> SQS —> 你的代码
为此我经常使用 AppSync。但 eventbridge 也很酷。
,如果您想避免轮询并且不能/想要使用 AWS Lambda,那么您可以解决问题并使用规则从 EventBridge 调用应用程序上的 API。
您可以在 EventBridge 中创建 API 目标:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。