In the process of creating my first microservice, I used RabbitMQ to create a reliable job queue. I’d never used it before and it’s pretty complicated so I needed to find a library with a simple api for getting started with it.
The library I settled on is jackrabbit.
It has drop-dead simple api which hides the complexity of working with RabbitMQ. Perfect for the first-timer who doesn’t know the nuances of queuing strategies.
While I was monkeying around with it, I noticed my queue wasn’t actually queuing. Messages that don’t get immediately processed disappear without a trace. That sounds like the very opposite effect of what I decided to use RabbitMQ for in the first place!
After some sleuthing, it turned out jackrabbit sets messages to expire after a second, and there was no api access to configure it. You can’t increase the duration or remove it. One second messages and that’s that.
Coincidentally enough, jackrabbit’s maintainer exposed the api a few days later, so I didn’t need to switch to a more complex library.
Since the default was still one second and it seemed like quite a few people wanted their messages to hang around in their queues, I decided to update jackrabbit docs to show how it’s done.
And he accepted my updates!
https://github.com/hunterloftis/jackrabbit/pull/16
Officially my first contribution to someone else’s project. Sure it’s not functionality or a fix, but it’s better than nothing.
Can’t wait to make bigger and better contributions 🙂