С вашего вопроса, я понимаю, у вас есть 2 очереди, и каждая очередь должна использоваться для обработки различных задач/заданий.
Вы можете выполнить следующие подходы
1) Deploy 2 веб-задания, каждый ждать различных очередей и вызвать соответствующие задания, когда на соответствующей очереди появляется сообщение. Код конфигурации, который вы упомянули выше, устанавливает базу для одного задания. И AFAIK, работа может ждать в одной очереди. Вы можете иметь метод, как это рядом с Main()
методом
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage)
{
//do something
}
2), если вы хотите, чтобы вызвать несколько сценариев, основанных на сообщениях из одной очереди, вы можете иметь, если еще блок по методу ProcessQueueMessage
или если вы хотите сделайте его более управляемым, используйте шаблон стратегии, чтобы выполнить правильный метод от ProcessQueueMessage
Если вы следуете за № 1 выше, вы разворачиваете различные веб-задания для каждой задачи/задания/сценария. Если вы следуете за № 2 выше, вы будете развертывать одно веб-задание, и то, что делает каждое сообщение, определяется при обработке сообщения.
Документация по вопросу ожидания в очереди here.
[Update]
Как мы знаем, один веб-работа может ждать только одна очередь, ожидание в очереди не правильный подход в данном случае. Лучше запускайте веб-работу периодически (скажем, раз в 5 минут). Логика для удаления сообщений из нескольких очередей и их обработки будет частью одного веб-задания. Обработка каждой очереди может быть методом, который вызывается веб-сайтом (один за другим или одновременно с использованием Task
). Вы можете передать количество сообщений на CloudQueue.GetMessages
для каждой очереди. Он будет очень похож на то, что делает служба Windows. Просто, чтобы запускающая часть выполнялась веб-заданием, и она работает как веб-работа, а не служба Windows. Вот грубый псевдокод:
main()
{
// initialize webjob
}
public static MyWebJobMethod(...)
{
Task a =() => {//process queue 1};
Task b =() => {//process queue 2}
Task.WaitAll(a,b);
}
спасибо за Ваш ответ я посмотрел на этой документации ранее, чтобы отправить вопрос, я не тэ возможность развертывания нескольких веб рабочих мест, на самом деле я бегу обслуживание окон это делает работу веб-работы совершенно прекрасной, проблема в том, как я могу установить «Максимальное количество сообщений в очереди, которые были собраны одновременно», для каждой очереди, например, один триггер должен запускать один из них в то время, а другой может иметь конфигурацию по умолчанию. –
http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config –
обновил мой ответ ... – Amit