Экспорт (0) Печать
Развернуть все

Использование Service Bus для .NET с протоколом AMQP 1.0

Загрузка пакета SDK для Service Bus

Поддержка протокола AMQP 1.0 доступна в пакете SDK для Service Bus 2.1 или более поздней версии. Последнюю версию пакета SDK можно загрузить на веб-сайте NuGet по адресу: http://nuget.org/packages/WindowsAzure.ServiceBus/.

Настройка приложений .NET для использования протокола AMQP 1.0.

По умолчанию клиентская библиотека .NET Service Bus обменивается данными со службой Service Bus с помощью специального протокола на основе SOAP. Чтобы использовать AMQP 1.0 вместо протокола по умолчанию, необходимо явно указать соответствующие параметры в строке подключения Service Bus, как описано в следующем разделе. Не считая этого изменения, при использовании AMQP 1.0 код приложения остается практически без изменений.

В текущем выпуске представлено несколько функций API, которые не поддерживаются при использовании AMQP. Эти неподдерживаемые функции перечислены далее в разделе «Неподдерживаемые функции и ограничения». Также при использовании AMQP меняется значение некоторых расширенных параметров конфигурации.

Настройка с использованием файла App.config

Для приложений рекомендуется использовать файл конфигурации App.config, чтобы сохранить настройки. Для приложений Service Bus можно использовать файл App.config, чтобы сохранить настройки для значения параметра Service Bus ConnectionString. Пример файла App.config выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Microsoft.ServiceBus.ConnectionString"
             value="Endpoint=sb://[namespace].servicebus.windows.net;SharedSecretIssuer=[issuer name];SharedSecretValue=[issuer key];TransportType=Amqp" />
    </appSettings>
</configuration>

Значение параметра Microsoft.ServiceBus.ConnectionString является Service Bus строкой подключения, которая используется для настройки подключения к Service Bus. Формат строки выглядит следующим образом:

Endpoint=sb://[namespace].servicebus.windows.net;SharedSecretIssuer=[issuer name];SharedSecretValue=[issuer key];TransportType=Amqp

Где [namespace], [issuer name] и [issuer key] получены из портала управления Windows Azure. Дополнительные сведения см. в разделе Использование очередей шины обслуживания.

При использовании протокола AMQP добавьте в строку подключения ;TransportType=Amqp. Эта запись передает сведения клиентской библиотеке для создания подключения к Service Bus с использованием протокола AMQP 1.0.

Сериализация сообщения

При использовании протокола по умолчанию сериализация клиентской библиотеки .NET по умолчанию является использованием типа DataContractSerializer для сериализации BrokeredMessage экземпляров для передачи данных между клиентской библиотекой и службой Service Bus. При использовании транспортного режима AMQP клиентская библиотека использует систему типов AMQP для сериализации BrokeredMessage в сообщение протокола AMQP. Эта сериализация позволяет получать и распознавать сообщение с помощью принимающего приложения, установленного на разных платформах, например приложения Java, которое использует программный интерфейс API JMS для доступа к Service Bus.

При создании экземпляра BrokeredMessage можно предоставить объект .NET в качестве параметра для конструктора, который будет служить текстом сообщения. Для объектов, которые могут сопоставляться с типами примитивов AMQP, текст сериализуется в типы данных AMQP. Если объект не удается непосредственно сопоставить с типом примитива AMQP, который является настраиваемым типом и определяется приложением, объект сериализуется с помощью DataContractSerializer и сериалозованные биты отправляются в сообщение данных AMQP.

Чтобы облегчить взаимодействие с клиентами из других диспетчеров пакетов, используйте только типы .NET, которые можно непосредственно сериализировать в типы протокола AMQP для тела сообщения. В этой таблице предоставлены дополнительные сведения об этих типах и соответствующем сопоставлении с системой типов AMQP.

 

Тип объекта текста .NET Сопоставленный тип AMQP Тип раздела текста AMQP

bool

boolean

Значение AMQP

byte

ubyte

Значение AMQP

ushort

ushort

Значение AMQP

uint

uint

Значение AMQP

ulong

ulong

Значение AMQP

sbyte

byte

Значение AMQP

short

short

Значение AMQP

Int

Int

Значение AMQP

long

long

Значение AMQP

float

float

Значение AMQP

double

double

Значение AMQP

decimal

decimal128

Значение AMQP

char

char

Значение AMQP

DateTime

TimeStamp

Значение AMQP

Guid

uuid

Значение AMQP

byte[]

binary

Значение AMQP

строка

строка

Значение AMQP

System.Collections.IList

list

Значение AMQP

Элементами, которые содержаться в коллекции, могут быть только указанные в таблице элементы.

System.Array

array

Значение AMQP

Элементами, которые содержаться в коллекции, могут быть только указанные в таблице элементы.

System.Collections.IDictionary

сопоставить

Значение AMQP

Элементами, которые содержаться в коллекции, могут быть только указанные в таблице элементы.

Примечание: Поддерживаются только ключи строки.

Uri

Described string

(см. таблицу ниже)

Значение AMQP

DateTimeOffset

Described long

(см. таблицу ниже)

Значение AMQP

TimeSpan

Described long

(см. ниже)

Значение AMQP

Stream

binary

Данные AMQP (может быть несколько)

Разделы данных содержат необработанные байты из объекта Stream.

Другие объекты

binary

Данные AMQP (может быть несколько)

Содержит сериализованные двоичные данные объекта, которые используют сериализатор DataContractSerializer или предоставленный приложением сериализатор.

 

Тип .NET Сопоставленный описанный тип AMQP Примечания.

Uri

<type name=”uri” class=restricted source=”string”>

<descriptor name=”com.microsoft:uri” />

</type>

Uri.AbsoluteUri

DateTimeOffset

<type name=”datetime-offset” class=restricted source=”long”>

<descriptor name=”com.microsoft:datetime-offset” />

</type>

DateTimeOffset.UtcTicks

TimeSpan

<type name=”timespan” class=restricted source=”long”>

<descriptor name=”com.microsoft:timespan” />

</type>

TimeSpan.Ticks

Неподдерживаемые функции, ограничения и различия поведений

В настоящее время при использовании AMQP не поддерживаются следующие функции API .NET для Service Bus.

  • Транзакции.

  • Отправка посредством назначения переноса.

  • Получение по последовательному номеру сообщения.

  • Обзор сообщений и сеансов.

  • Состояние сеанса.

  • Программные интерфейсы API на основе пакета.

  • Масштабирование получения.

  • Оперирование правилами подписки во время выполнения.

  • Обновление блокировки сеанса.

В частности, при использовании AMQP в настоящее время не поддерживаются указанные ниже API.

Кроме того, применение AMQP немного меняет поведение API .NET для Service Bus по сравнению с использованием протокола по умолчанию.

  • Свойство OperationTimeout игнорируется.

  • MessageReceiver.Receive(TimeSpan.Zero) реализован как MessageReceiver.Receive(TimeSpan.FromSeconds(10)).

Параметры управления протоколом AMQP

Программные интерфейсы API .NET предоставляют несколько параметров для управления поведением протокола AMQP:

  • MessageReceiver.PrefetchCount: управляет начальным разрешением на передачу, которое применяется к ссылке. Значение по умолчанию – 0.

  • MessagingFactorySettings.AmqpTransportSettings.MaxFrameSize: управляет максимальным размером кадра протокола AMQP, предложенного при согласовании во время открытия подключения. Значение по умолчанию – 65 536 байт.

  • MessagingFactorySettings.AmqpTransportSettings.BatchFlushInterval: если передача данных обрабатываются пакетом, значение определяет максимальную задержку отправки распоряжения. Унаследовано отправителями/получателями по умолчанию. Отдельный отправитель/получатель может изменить значение по умолчанию (20 миллисекунд).

  • MessagingFactorySettings.AmqpTransportSettings.UseSslStreamSecurity: определяет, установлено ли подключение протокола AMQP через SSL-подключение. По умолчанию используется значение true.

Добавления сообщества

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2014 Microsoft