2013-07-08 3 views
0

У меня есть рабочая роль (WR-1) для размещения сообщений в Azure Queue. WR-1 запланирован с использованием Quartz.NET.
У меня есть другая рабочая роль (WR-2), обрабатывающая сообщения в Azure Queue.
Я хотел бы запустить WR-2 из WR-1 после завершения операции очереди.
Я не мог найти никакого материала о том, как создать экземпляр рабочей роли из другой рабочей роли. Возможно ли это? Как это можно сделать?Создание экземпляра рабочей роли из рабочей роли

ответ

2

Если ваши рабочие роли являются разными приложениями, вы можете использовать Service Management API для создания нового развертывания для WR-2 из WR-1. Что бы вы сделали, это поместить файлы пакета и конфигурации WR-2 в хранилище blob, и когда WR-1 выполнил посылку всех сообщений в очереди, вы создаете новое развертывание WR-2. Чтобы создать развертывание программно с помощью API управления сервисами, см. Здесь: http://msdn.microsoft.com/en-us/library/windowsazure/ee460813.aspx. Однако вам нужно будет убедиться, что после того, как WR-2 выполнит все данные, он будет уничтожен WR-1, чтобы вы не продолжали взимать плату.

Другая возможность - запустить экземпляры рабочей роли для запуска в конфигурации Master/Slave. Допустим, есть 2 экземпляра вашей рабочей роли. Одним из экземпляров будет экземпляр Master, который поместит данные в очередь и после того, как данные будут помещены в очередь, он напишет сообщение в какой-то другой очереди, сигнализируя Slave, что это делается, записывая данные. Slaves будет постоянно опробовать эту другую очередь, и как только они обнаружат, что Master закончил поместить данные, они могут начать собирать данные из очереди, содержащей фактические данные, и обрабатывать их. Чтобы решить, какой экземпляр будет Master, а какие будут Slave, вы можете использовать функциональность Lease Blob. Экземпляр, который может приобрести лизинг на блобе, будет Master, а в других случаях - Slave.

+0

Посмотрев на оба варианта, похоже, что первый вариант является экономически выгодным с точки зрения модели ценообразования на лазурь. исправьте меня, если я ошибаюсь. – Seenu

+0

Я хотел бы понять причину, по которой вы упомянули «Если ваши рабочие роли - разные приложения», как это отличается, если они из одного приложения. – Seenu

+1

Что касается вашего 1-го комментария, первый вариант дешевле, если вы правильно создадите и уничтожаете WR-2. Если вы оставите WR-2 включенным, то вы будете нести ненужные расходы. О втором комментарии. В разных приложениях я имею в виду ваши рабочие роли (WR-1 и WR-2) в двух разных решениях, а не в одном. –

Смежные вопросы