retzkek / bunnyhop

AMQP message relay with filtering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bunnyhop

🐇 .·˙˙˙·. 🐇

bunnyhop is an AMQP 0.9.1 (e.g. RabbitMQ) message relay, that simply reads from a queue bound to an exchange in one broker and writes to an exchange in another. It aims for reliability and preventing message loss.

It optionally can filter JSON messages by matching the value of top-level keys to a regex pattern. If filter rules are provided, they define a whitelist, where a message that matches any rule is forwarded. If no rules are defined, all messages are forwarded (and bunnyhop skips the overhead of unmarshaling the message from JSON).

Installation

The recommended method of running bunnyhop is with Docker:

docker pull retzkek/bunnyhop

Binary releases may be available on GitHub.

Configuration

bunnyhop supports configuration via JSON, TOML, YAML, HCL, or Java properties formats. See the bunnyhop.yml file for a complete configuration example with description and defaults. It will look for files named bunnyhop with the appropriate extension, e.g. bunnyhop.yml, in the following locations:

  • /etc
  • /etc/bunnyhop
  • .

Parameters can also be set by environment variable that is prefixed with "BH_", and follows dot notation, except underscore-delimited and in all caps. e.g.:

  • BH_APP_LOG_LEVEL=debug
  • BH_ORIGIN_EXCHANGE_NAME=myexchange

Monitoring

bunnyhop by default will publish various runtime metrics in the Prometheus exposition format at http://localhost:8080/metrics. It can also push metrics in the Graphite "plain" format at regular intervals.

Additionally, it can expose pprof profiling information on a separate port (default http://localhost:6060).

About

AMQP message relay with filtering

License:Apache License 2.0


Languages

Language:Go 98.3%Language:Dockerfile 1.2%Language:Makefile 0.5%