Ну, очередь сообщений отлично подходит для гарантированной доставки через транзакционную очередь. Что помогает сделать вашу систему устойчивой к сбоям и неожиданным перезагрузкам. Но, как правило, это сработает только тогда, когда вы сможете перезапустить приложение после такого сбоя и восстановить состояние до того, как вы снова начнете получать сообщения.
Это нетривиальное требование. Если вы не можете встретиться с ним, любые сообщения о состоянии могут снова привести к отключению машины. В сообщениях почти всегда есть явное состояние, даже если их содержимое не является состоящим из состояния, просто в порядке, в котором они получены, и изменяет состояние вашей программы. Это было проклятием для промежуточного программного обеспечения, программное обеспечение, которое предполагает, что сетевое взаимодействие - это деталь реализации, которую можно абстрагировать, на практике не работает.
Я думал, этот ответ в СО выразил эту проблему особенно хорошо.