To Message Bus or Not: Distributed Systems Design (2017)
Besides the distributed case, message bus is invaluable in building crash-proof applications.  I&#x27;ve used lightweight message bus within the app itself, for better crash recovery on long running tasks.  E.g. Need to generate lots of emails and send them out.  I would create a small command object for each email and queue it to the message bus, and let the message handler to handle email generation one by one.  The lightweight command objects can be queued up quickly and the UI can return to the user right the way.  The slow running email generation can be run in the background.  In the event of a system crash, the message bus will be restored automatically and continue on the remaining tasks in the queue.