Hi Tim,

this looks like a very nice package, thanks for sharing! Since I am not that 
deeply into RabbitMQ, I guess the “opinionated” part is about favoring 
at-least-once guarantees and explicit acknowledgement over magic? This would 
fit in well with the overall Akka philosophy, and that would presumably not be 
coincidental ;-)

How has your experience been so far with building upon Akka Streams, did you 
miss anything or find anything especially great? Looking at your code samples 
there is possibly one difficult part, which is the Promise that gets fed into 
the Sink in order to signal completion—perhaps that could be modeled more 
cleanly by exposing an outgoing stream of acknowledgements (i.e. making the 
producer a Flow and not a Sink) so that a feedback loop would inform upstream 
producers of successful ingestion.

Regards,

Roland

> 11 maj 2015 kl. 06:23 skrev Tim Harper <[email protected]>:
> 
> 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/ <http://akka.io/docs/>
> >>>>>>>>>> Check the FAQ: 
> >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html 
> >>>>>>>>>> <http://doc.akka.io/docs/akka/current/additional/faq.html>
> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user 
> >>>>>>>>>> <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] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at http://groups.google.com/group/akka-user 
> <http://groups.google.com/group/akka-user>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.



Dr. Roland Kuhn
Akka Tech Lead
Typesafe <http://typesafe.com/> – Reactive apps on the JVM.
twitter: @rolandkuhn
 <http://twitter.com/#!/rolandkuhn>

-- 
>>>>>>>>>>      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.

Reply via email to