Я думаю, я бы разработал это немного по-другому.
Вместо того, чтобы рабочие роли выставляли конечные точки WCF и отправляли сообщения между ними, может быть лучше использовать очереди.
Сообщения могут быть отправлены в очереди, а также забраны и обработаны другими рабочими ролями. Это обеспечивает определенный срок службы, поскольку если рабочая роль, которая должна получить сообщение, по какой-либо причине не работает, она может продолжить обработку этих сообщений в своей очереди при возврате. Также любые необработанные исключения, возникающие во время обработки сообщения, будут означать, что сообщение вновь появится в очереди по истечении определенного периода времени ожидания. Если ваше приложение / сайт действительно работает, вы можете добавить дополнительные экземпляры этих рабочих ролей для более быстрой обработки сообщений в очередях.
Поэтому, используя очереди, вы получаете определенную дополнительную прочность, и ее легче масштабировать позже.
Хорошее введение в использование очередей на сайте разработчика fusion