Я создаю приложение, которое хочу поместить в облако. Это приложение имеет одну основную функцию.
Он размещает сеансы CLIENT для сокетов от имени других пользователей (например, Beejive IM для iPhone, где он размещает сеансы IM для клиентов, чтобы поддерживать состояние в этих сетях IM, позволяя клиенту подключаться / отключаться по желанию, не нарушая Подключение к сети IM).
Теперь, как я и планировал, так это то, что один «рабочий экземпляр» может обрабатывать только конечное число клиентских сессий (скажем, 50 000 для аргументации). Эти сессии будут очень долгоживущими рабочими задачами.
Проблема, с которой я пытаюсь разобраться, заключается в том, что мне иногда нужно будет выполнять задачи для определенных клиентских сеансов (например: если мне нужно отключить клиентский сеанс). С Azure смогу ли я поставить в очередь меньшую задачу, которую сможет снять в очередь только экземпляр, на котором размещен этот конкретный сеанс клиента?
Сейчас я рассматриваю GoGrid в качестве своего провайдера и решаю эту проблему с помощью программного обеспечения Apache Active Messaging Queue. Мое веб-приложение ставит в очередь задачи «отключить», которые назначены определенному идентификатору экземпляра. Поэтому каждому клиентскому сеансу присваивается определенный идентификатор экземпляра. В этом случае экземпляр отменяет только назначенные ему задачи «отключить».
Мне интересно, возможно ли сделать что-то подобное на Azure, и как я обычно это делаю. Мне нравится идея не настраивать много разных виртуальных машин для масштабирования, а просто развертывать один пакет. Кроме того, было бы неплохо использовать очереди Azure вместо интеграции стороннего продукта, такого как Apache ActiveMQ или даже MSMQ.