Подтвердить что ты не робот

Использование NServiceBus в приложении Amazon EC2

Мы запускаем новый проект, в котором есть некоторые требования к передаче сообщений и очереди, которые являются довольно базовыми, но в будущем могут возникнуть дополнительные требования к таким вещам, как саги, для обработки сообщений, которые могут выходить из строя, и должны быть секвенировали.

Недавно мы выпустили проект, полностью размещенный на Amazon EC2, который также имеет в нем простую систему обмена сообщениями. У нас есть очень упрощенный небольшой паб/вспомогательный механизм, посредством которого мы получаем сообщение, а затем выясняем, какой обработчик использовать для сообщения на основе его типа. В нашем новом проекте мы также имеем аналогичный механизм и можем иметь несколько более сложные требования, но даже если бы мы могли покончить с собственным кодом для решения обработчиков сообщений, это тоже было бы круто.

Мы очень заинтересованы в использовании NServiceBus, поскольку модель pub/sub действительно хороша, но до сих пор мы использовали Amazon SQS в качестве поставщика очереди. У каждой из наших машин EC2 есть рабочий, который слушает одну и ту же очередь SQS и отвлекает сообщения от этого, чтобы обработать их. Очевидно, что SQS не поддерживается как транспортный уровень (и я знаю это, потому что NServiceBus построен вокруг надежной очереди с низкой задержкой) в NServiceBus.

Я знаю, что у NServiceBus есть дистрибьютор, и я мог представить себе хостинг, что на его собственном экземпляре EC2, но проблема в том, что там есть огромная единая точка отказа, поэтому мы в основном ввернуты, если это произойдет, Из того, что я собираю, люди настраивают отказоустойчивые кластеры Windows для решения этой проблемы для внутренних сетей, но я не знаю, применимо ли это к EC2.

Этот был одним из единственных сообщений в блоге, которые я мог найти тем, кто фактически попытался использовать NServiceBus в контексте на основе облака, и он не похоже, рекомендую его. Мне просто интересно, попытался ли кто-нибудь еще здесь, и если бы у них были какие-либо советы? Похоже, такой позор, что мы не сможем использовать такую ​​прекрасную структуру только потому, что мы размещаемся в облаке.

Похоже, что некоторые прогресс выполняется с помощью Azure Queues, на что мы можем смотреть, но на данный момент мы хотели бы сохранить инфраструктуру Amazon как у нас есть много автоматизации сборки, которые мы можем повторно использовать, основываясь на этом.

4b9b3361

Ответ 1

Из опыта очередей в Amazon EC2 мы обнаружили, что SQS очень вялый для высокопроизводительных сообщений.

В настоящее время мы не используем NServiceBus в качестве интерфейса очередей, а просто подумали, что я бы сказал, что мы успешно используем RabbitMQ в Ubuntu в EC2 как наш поставщик очереди.

Согласно этот пост Уди Дахан предлагает, что люди поменяли MSMQ на RabbitMQ с помощью NServiceBus, поэтому было бы целесообразным расследование использования RabbitMQ на EC2.

Существует отличный отличный путеводитель на веб-сайте RabbitMQ, в котором описывается простой способ установки RabbitMQ на Amazon EC2 путем запуска совместимого образа Ubuntu.

Я очень рекомендую установить RabbitMQ Плагин управления, который дает вам простой интерфейс веб-администратора в очередях.