I have developed a high-level library for efficiently setting up resilient,
fault-tolerant RabbitMQ consumers using Akka and Akka Reactive Streams.
Some of the features:
- Recovery:
- Consumers automatically reconnect and subscribe if the connection is
lost
- Messages published can optionally
- Integration
- Connection settings pulled from Typesafe config library
- Asyncronous, concurrent consumption using Scala native Futures or the
new Akka Streams project.
- Common pattern for serialization allows easy integration with
serialization libraries such play-json or json4s
- Common pattern for exception handling to publish errors to Airbrake,
Syslog, or all of the above
- Modular
- Composition favored over inheritance enabling flexible and high code
reuse.
- Modeled
- Queue binding, exchange binding modeled with case classes
- Publishing mechansims also modeled
- Reliability
- Builds on the excellent [Akka RabbitMQ
client](https://github.com/thenewmotion/akka-rabbitmq) library for easy
recovery.
- Built-in consumer error recovery strategy in which messages are
re-delivered to the message queue and retried (not implemented for
akka-streams integration as retry mechanism affects message order)
- With a single message, pause all consumers if service health check
fails (IE: database unavailable); easily resume the same.
- Graceful shutdown
- Consumers and streams can immediately unsubscribe, but stay alive
long enough to wait for any messages to finish being processed.
- Tested
- Extensive integration tests
The source is available here: https://github.com/SpinGo/op-rabbit
We have been using the library internally at SpinGo for a year and I am
working towards a 1.0.0 release candidate. We're using the streaming
integration as the foundation for a billing system which is heavily based
on reliable message-order, and at-least-once-delivery guarantees. I'm
rather excited to share it with the world, and would be grateful for
feedback. I plan on creating an Activator project to help people learn the
library quickly.
Some examples are on the github page. More examples can be found in the
tests.
Feedback, is of course, appreciated.
Tim
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.