随着团队追求更具适应性、可扩展性和敏捷性的解决方案来满足当代应用程序的要求,事件驱动架构的采用正在兴起。事件驱动架构通过标准化和结构化事件实现通信,支持实时更新并简化不同系统之间的集成。
在之前的博文中,我讨论了 Auth0 中的 webhook 如何传输事件,从而利用这些事件来启动逻辑执行。在这篇文章中,我将深入研究该架构的技术方面,并演示如何利用 Go (Golang) 来构建这样的系统。
主要成分:
让我们首先看一下驱动这个系统的主要组件。
Auth0 具有与租户级别的每个活动相关的日志事件。这些事件可用于监控或审计目的。每个活动的代码可以在这里查看
我们使用 auth0 webhooks 将过滤后的事件传递给我们的生产者。我们过滤这些事件,因为我们只对少数事件感兴趣。
RabbitMQ 支持多种消息传递协议,我们用来路由消息的协议是高级消息传递队列协议(AMQP)。 AMQP 具有三个主要实体 – 队列、交换器和绑定。
当 Auth0 中触发事件时,它会立即通过 webhook 发送给我们的发布者,然后发布者根据事件类型发布它。一旦发布,该事件就会进入交易所。交换器将消息定向到连接的队列,消费者在那里接收消息。为了实现这一过程,我们建立了一个渠道。该通道允许我们发布消息进行交换并声明订阅队列。
接下来,我们创建一个连接到 RabbitMQ 的消费者并建立通信通道。使用这个通道,我们可以使用为其定义的 Consume 方法来消费消息。
基础工作
我们使用 golang-auth0 管理包来处理日志事件,对于队列操作,我们使用 github.com/rabbitmq/amqp091-go。
出版:
日志的详细结构可以在这里找到
雷雷
消费:
快乐编码:)
以上是使用 Golang 中的 Log Events 和 RabbitMQ 进行事件驱动设计的详细内容。更多信息请关注PHP中文网其他相关文章!