NServiceBus предоставляет механизм тайм-аута. С сайта nservicebus.com:
Метод RequestTimeout в базовом классе указывает NServiceBus отправить сообщение на другую конечную точку, которая будет надежно хранить время для нас... Существует процесс, который поставляется с NServiceBus, называемый диспетчером тайм-аута, который обеспечивает базовую реализацию этой функциональности.
Когда время истекло, Timeout Manager отправляет сообщение обратно в сагу, вызывая вызов его метода Timeout с тем же самым объектом состояния, который был передан изначально.
Как я вижу, существует вероятность того, что тайм-аут срабатывает, даже если сообщение было доставлено получателю (например, ответ где-то застрял).
Как спроектировать свое приложение таким образом, чтобы мое приложение работало правильно независимо от того, дошло ли сообщение до получателя или нет.