如何在客户端应用程序中订阅 AWS Event Bus 事件

How to subscribe to AWS Event Bus events in a client application

如何从客户端应用程序订阅 AWS 事件总线事件,例如:NodeJS 应用程序、Angular 客户端或移动客户端应用程序?

2020 年 12 月,来自 AWS Marketing 的一封电子邮件介绍了使用事件驱动架构的优势。按照文档和教程,很快我就陷入了找不到从客户端应用程序订阅此事件的方法的困境。

邮件中写道:

关注事件驱动架构的 4 个理由

您是否希望在没有延迟和依赖性的情况下扩展和构建健壮的应用程序?我们分解了事件驱动架构的基础知识、它们的工作原理,并向您展示了入门方法。了解事件驱动架构如何帮助您:

令人失望的是,没有在客户端代码中集成库的示例来订阅这些事件。谷歌搜索没有 return 任何重要结果,并且节点的唯一当前库:@aws-sdk/client-eventbridge-node 仅公开发送和销毁方法。

无法直接订阅 Amazon EventBridge 总线,因为它不提供 publish/subscribe 功能。为了在 EventBridge 中处理事件,您 create event rules that filter and send matching events to targets. You can find all targets available to EventBridge rules on this list: Amazon EventBridge Targets.

其中一个目标可能是 Amazon SNS 主题,它提供 pub/sub 功能,即您的客户端应用程序可以 subscribe to the topic 自动接收相应的事件。

这乍一听可能很复杂,但实现上严格遵循分离关注点的原则。它提供了简单的构建块——就像乐高积木——您可以将它们组合在一起以创建真正松散耦合的体系结构。

This diagram 展示了 Amazon Event Bridge 范围内的功能以及它如何与其他服务和应用程序通信。

允许您按需订阅的服务(通过 websocket 等 TCP 连接直接将订阅的消息传送到您的代码)是:

  • AppSync - 网络套接字
  • 物联网核心——websocket、mqtt
  • SQS - 长轮询
  • 卡夫卡

(从我的头顶)

因此,一个简单的无服务器解决方案可能是:

事件桥 —> SQS —> 您的代码

我经常为此目的使用 AppSync。但是 eventbridge 也很酷。

如果您想避免轮询并且您 cant/want 使用 AWS Lambda 那么您可以扭转问题并使用规则从 EventBridge 在您的应用程序上调用 api。

您可以在 EventBridge 中创建 API 个目标:

API destination