一个用Go编写的事件驱动应用程序的例子

280 阅读1分钟

事件驱动应用程序示例

An example Event-Driven application written in Go

这是一个用Go编写的事件驱动应用程序的例子,使用Watermill

该项目旨在将传入的GitHub webhooks与Grafana和Slack整合起来,基本上是在推送新的提交时添加注释并发送消息。还有通过RabbitMQ发送的模拟部署消息,以展示与多个事件流的工作:

An example Event-Driven application written in Go

一个例子的结果可以是这样的:

An example Event-Driven application written in Go

An example Event-Driven application written in Go

运行中

如果您想将该示例与您的 Slack 工作区集成,请将.env-example 复制到.env 并在SLACK_WEBHOOK_URL 变量中填入 webhook URL。

除了应用程序之外,docker-compose环境还包括:

  • KafkaZooKeeper
  • RabbitMQ
  • Grafana
  • Prometheus

整个环境可以用运行:

docker-compose up

现在你可以配置你的GitHub仓库,向应用程序发送webhooks(你需要先将端口8080 暴露给外部网络)。

或者,你可以运行./scripts/send-stub-webhook.sh 来发送一些存根webhooks。

访问localhost:3000/d/webhooks,查看Grafana中添加的注释。使用admin:secret 作为凭证。

衡量标准

你可以在localhost:3000/d/watermill访问Watermill仪表板。看看随着时间的推移,当你发送更多的webhooks时有什么变化:

An example Event-Driven application written in Go