CloudQueueClient.ResponseReceived Событие не работает? - PullRequest
2 голосов
/ 27 марта 2011

Я пытаюсь создать управляемую событиями очередь Azure, в которой событие должно запускаться каждый раз, когда сообщение помещается в очередь Azure. С помощью AzureXplorer я вижу, что сообщения правильно помещаются в очередь Azure, но событие CloudQueueClient.ResponseReceived никогда не запускается. Я использую Azure V1.4. Это код из моей рабочей роли:

public class WorkerRole : RoleEntryPoint
{
    public override void Run()
    {            
        while (true)
        {
            Thread.Sleep(10000);

        }
    }

    public override bool OnStart()
    {
        // Set the maximum number of concurrent connections 
        ServicePointManager.DefaultConnectionLimit = 12;

        var queuDataSource = new AzureQueueDataSource();
        queuDataSource.GetCloudQueueClient().ResponseReceived +=new EventHandler<ResponseReceivedEventArgs>(WorkerRole_ResponseReceived);


        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
        return base.OnStart();
    }

    void WorkerRole_ResponseReceived(object sender, ResponseReceivedEventArgs e)
    {
        var i = 1;  // Breakpoint here never happends
    }
}

1 Ответ

4 голосов
/ 27 марта 2011

Очереди Windows Azure необходимо опросить на наличие новых сообщений.См. Примеры SDK или код здесь для примеров того, как запрашивать очереди для новых сообщений.

Быстрый список вещей, которые следует учитывать:

  1. Поскольку опроссчитается как транзакция в Windows Azure, вы будете платить за них.
  2. Обычно лучше реализовать какой-либо механизм повторных попыток, если сообщения не найдены (например, экспоненциальный откат и т. д.)
  3. Обычно полезно извлекать сообщения партиями (меньше циклов, меньше транзакций и т. Д.)
  4. Помните, что сообщения могут доставляться более одного раза (план для дубликатов сообщений)
  5. ИспользоватьСвойство " dequeuecount " для работы с "ядовитыми сообщениями".

На все это есть много информации.Смотрите документацию / образцы по ссылке выше.Эта статья тоже довольно хороша: http://blogs.msdn.com/b/appfabriccat/archive/2010/12/20/best-practices-for-maximizing-scalability-and-cost-effectiveness-of-queue-based-messaging-solutions-on-windows-azure.aspx

...