Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Экспорт (0) Печать
Развернуть все

Новые возможности пакета SDK для Azure версии 2.0 (апрель 2013 г.)

Обновлено: Январь 2014 г.

Выпуск Шина службы Microsoft Azure за апрель 2013 г. содержит много новых функций и возможностей. В данном разделе подведен итог новых функций, а также доступны ссылки на дополнительную информацию.

noteПримечание
Эти функции не поддерживаются в Шина обслуживания для Windows Server.

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

Вызов Microsoft.ServiceBus.Messaging.QueueClient.Peek возвращает все свойства сообщения и текст сообщения. Кроме того, метод Microsoft.ServiceBus.Messaging.QueueClient.Peek(System.Int64) позволяет просматривать свойства сообщения, начиная с определенного порядкового номера. Например:

QueueClient queueClient = QueueClient.Create("myQ");
var message = queueClient.Peek(); // does not lock the message
var message = queueClient.Peek(fromSequenceNumber: 4); // specific starting point
var messages = queueClient.PeekBatch(messageCount: 10); // supports batching

Дополнительные сведения см. в разделе

Эта функция позволяет приостановить и возобновить отправку и получение сообщений в очередях и разделах. Эту функцию можно включить, используя перечисление Microsoft.ServiceBus.Messaging.EntityStatus и задав свойство Status. Например:

QueueDescription qd = namespaceManager.GetQueue("myQ");
qd.Status = EntityStatus.Disabled; //all operations blocked
qd.Status = EntityStatus.SendDisabled; //can continue to de-queue
qd.Status = EntityStatus.ReceiveDisabled; //can continue to en-queue
qd.Status = EntityStatus.Active; //all operations allowed
namespaceManager.UpdateQueue(qd);

Дополнительные сведения см. в разделе

Автоматическое удаление дает возможность задать промежуток времени, по истечение которого неактивная очередь, раздел или подписка будут удалены автоматически (минимальный промежуток времени — 5 минут). В случае отсутствия операции отправки или получения на протяжении периода времени, указанного в свойстве AutoDeleteOnIdle, сущность удаляется. Однако, если в очереди или подписке есть вызовы получения, сущность не удаляется (даже если она не содержит сообщений). Например:

TopicDescription topicDescription = new TopicDescription("myTopic");
topicDescription.AutoDeleteOnIdle = TimeSpan.FromMinutes(30); // minimum is 5 minutes, the default is TimeSpan.MaxValue
namespaceManager.CreateTopic(topicDescription);

Дополнительные сведения см. в разделе

Данная функция представляет модель программирования обмена сообщениями на основе событий (или принудительной отправки), которая является альтернативой циклу получения. Эта функция поддерживает одновременную обработку сообщений и позволяет обрабатывать сообщения с переменной частотой. Эта модель имеет следующие преимущества перед явно кодированным циклом приема:

  • Создавать циклы получения сложнее — необходимо явно определять условие их завершения. Для модели конвейера обработки сообщений код создать гораздо проще.

  • Для контроля скорости цикла в циклах приема необходима статическая команда wait. Модель конвейера обработки сообщений позволяет выполнять обработку с переменной частотой; нет необходимости контролировать скорость.

  • Цикл приема должен быть завершен явно, а определить момент его завершить зачастую трудно. Конвейер обработки сообщений останавливается, когда в клиенте для сущности обмена сообщениями вызывается команда Close().

Класс Microsoft.ServiceBus.Messaging.OnMessageOptions позволяет задать для конвейера обработки сообщений дополнительные параметры. Доступны следующие свойства:

OnMessageOptions options = new OnMessageOptions();
options.AutoComplete = true; // Indicates if the message pump should call Complete() on messages after the callback has completed processing.
options.MaxConcurrentCalls = 1; // Indicates the maximum number of concurrent calls to the callback the pump should initiate. 
options.ExceptionReceived += LogErrors; // Enables notification of any errors encountered by the message pump.

// Start receiving messages
queueClient.OnMessage((receivedMessage) => // Initiates the message pump and callback is invoked for each message that is received, calling close on the client will stop the pump.
    {
        // Process the message
        Trace.WriteLine("Processing", receivedMessage.SequenceNumber.ToString());
    }, options);

private void LogErrors(object sender, ExceptionReceivedEventArgs e)
{
    Trace.WriteLine(e.Exception.Message);
}

Дополнительные сведения см. в разделе

Теперь программные интерфейсы API на основе задач поддерживают версии на основе System.Threading.Tasks.Task для всех асинхронных программных интерфейсов API. Теперь для пары асинхронных программных интерфейсов API (программных интерфейсов API, для которых есть пары трассировки "Begin/End") существует также версия Async. В этих версиях не нужна явная семантика Begin и End. Например, для Microsoft.ServiceBus.NamespaceManager.BeginQueueExists(System.String,System.AsyncCallback,System.Object) и Microsoft.ServiceBus.NamespaceManager.EndQueueExists(System.IAsyncResult) теперь существует версия Microsoft.ServiceBus.NamespaceManager.QueueExistsAsync(System.String).

Например, следующий код проверяет существование очереди с помощью асинхронной модели.

static void QueueCheck()
{
    NamespaceManager namespaceManager = NamespaceManager.Create();
    namespaceManager.BeginQueueExists(“testQueue”, EndQueueCheck, namespaceManager); 
}

Static void EndQueueCheck(IAsyncResult result) 
{
    NamespaceManager namespaceManager = (NamespaceManager) result.AsyncState; 
    bool exists = namespaceManager.EndQueueExists(result); 
    Console.WriteLine(“Queue {0} exists.”, exists ? “does” : “does not”); 
}

При использовании программного интерфейса API на основе задач этот же код выглядит следующим образом:

NamespaceManager namespaceManager = NamespaceManager.Create();
bool exists = await NamespaceManager.QueueExistsAsync(“testQueue”); 
Console.WriteLine(“Queue {0} exists.”, exists ? “does” : “does not”);

Дополнительные сведения см. в разделе

Теперь подлинность приложения может быть проверена в Шина службы Microsoft Azure с помощью аутентификации подписанного URL-адреса (SAS) или, как раньше, с помощью Microsoft Azure Active Directory Access Control (также называется Access Control Service или ACS). Аутентификация подписанного URL-адреса позволяет проверять подлинность приложений в Служебная шина с помощью ключа доступа, настроенного в пространство имен службы, или в сущности, с которой связаны определенные права. Этот ключ можно использовать для создания маркера подписанного URL-адреса, который клиенты могут использовать для аутентификации в Служебная шина. Дополнительные сведения подписанном URL-адресе см.в разделах Проверка подлинности и авторизация шины обслуживания и Проверка подлинности подписанного URL-адреса с помощью шины обслуживания.

Показ:
© 2015 Microsoft