Skip to content
An example Event-Driven application in Go built with Watermill library.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
metrics
pkg
scripts
.env-example
.gitignore
LICENSE
README.md
docker-compose.yml
go.mod
go.sum

README.md

Event-Driven application example

This is an example Event-Driven application written in Go, using Watermill.

The projects aims to integrate incoming GitHub webhooks with Grafana and Slack, essentially adding annotations and sending messages when a new commit is pushed. There are also simulated deployment messages sent over RabbitMQ to demonstrate working with multiple event streams.

An example result can look like this:

Running

If you'd like to integrate the example with your Slack workspace, copy .env-example to .env and fill in the webhook URL in SLACK_WEBHOOK_URL variable.

In addition to the application, the docker-compose environment consists of:

  • Kafka and ZooKeeper
  • RabbitMQ
  • Grafana
  • Prometheus

The whole environment can be run with:

docker-compose up

You can now configure your GitHub repository to send webhooks to the application (you need to expose port 8080 to the external network first).

Alternatively, you can run ./scripts/send-stub-webhook.sh to send some stub webhooks.

Visit localhost:3000/d/webhooks to see annotations added in Grafana. Use admin:secret as credentials.

Metrics

You can access the Watermill dashboard at localhost:3000/d/watermill. See what changes when you send more webhooks over time.

What's next?

See Watermill's documentation to learn more.

You can’t perform that action at this time.