Hi all,
I am looking for a good message broker service with solid haskell bindings. I have a need for maintaining multiple topics that can be published/subscribed by various systems locally or over network. I don’t want to use any cloud services because my use case is just inter process communication, making the whole cloud thing more of a pain than any real benefit.
Currently I am looking into RabbitMQ, ZeroMQ, and anything else mentioned in the ZeroMQ wiki page, but if anyone has any recommendations please send them my way.
The amqp library does what you want it to do. You might need to read up on how RabbitMQ works in general, but it’s been super stable and performant for us so far
I’d also like to mention that Kafka is a distributed event store / stream processing platform. It is not a message broker. If you try to use it as if it were a message broker, you’ll end up implementing some basic primitives from scratch and depending on what your exact requirements are you might have a very bad time. Kafka’s topics do not have message queue semantics.
Kafka is just way too much for my use case. I ended up going with zmq as it seems the most lightweight. I will be processing hundreds of events at most, and will only have like 6 sources at most.
Using a pub/sub zmq pattern along with some basic req/res seems to be doing the trick. The zmq haskell library is also fairly ergonomic, which was a pleasant surprise.
And, to add up on previous, there’s already an implementation: odd-jobs: A full-featured PostgreSQL-backed job queue (with an admin UI)
haven’t tried using it, no idea how stable it is or how well (if at all) maintaned. The last version is from 2020, but there are more recent commits (about 1y ago) that are not released. YMMV.
It is stable, although development could be more intensive considering that it needs improvements in some aspects. The web UI also leaves to be desired at time.