From DRB, XMPP, and AMQP to Resque and Rails 4. Running a background worker process is a tool I’ve reached for often, and while the underlying tools may change, the same problems seem to crop up in every one. A failed request serves your fancy custom 500 error page, but what about a failed job? Is there such a thing as a “reliable” queuing system that will never lose OR double process any jobs? Are we talking about “simple” asynchronous method calls on models or should we build “pure” workers with only the knowledge of a single task? What does “idempotent” mean again? Please allow me to enliven the debates.