Enable AMQP over SSL, topic exchanges, and graphite format #1

merged 4 commits into from Dec 17, 2013


None yet

2 participants

aw commented Dec 15, 2013

This is a pretty significant change 🔥 to the current statsd/amqp implementation.

I've outlined the changes below:

  • Messages are sent to an AMQP topic exchange instead of a queue
  • Exchanges must be topic and set to durable
  • Messages can be sent in JSON format, or in Graphite format (metric value timestamp\n)
  • JSON messages use the json_payload routing key
  • GRAPHITE messages use the metric namespace as routing key
  • Graphite metric namespacing are using the new format, not the legacy format See Namespacing doc
  • Namespacing, except for prefixStats is not configurable (yet)
  • The previous node-amqp library was inadequate and extremely buggy, it was replaced with amqplib
  • It is now possible to have encrypted AMQP connections by specifying the proper SSL keys and certificate files
  • There is no support for sets or histograms (yet)
  • Tested and works with RabbitMQ
@mrtazz mrtazz commented on an outdated diff Dec 15, 2013
-{ amqpHost: 'localhost'
+, backends: [ "statsd-amqp-backend" ]
+, amqpHost: 'localhost'
mrtazz Dec 15, 2013 Owner

I think since this is a big change anyways, we should also change the config format to something like:

  amqp: {
    host: 'localhost',
    port: 5672,

This way we don't pollute the global namespace even more with namespacing in the key name.

@mrtazz mrtazz commented on an outdated diff Dec 15, 2013
@@ -6,9 +6,9 @@
"type": "git",
"url": "https://github.com/mrtazz/statsd-amqp-backend.git"
- "version": "0.1.0",
+ "version": "0.2.0",
mrtazz Dec 15, 2013 Owner

can you remove the version bump? Chances are high this is gonna be a 0.2.0 but I'll bump it myself then.

aw commented Dec 16, 2013

Good call!

mrtazz commented Dec 17, 2013

Awesome, looks good. Thanks for submitting this pull request!

@mrtazz mrtazz merged commit 10c3fee into mrtazz:master Dec 17, 2013
aw commented Dec 17, 2013

💜 🐼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment