내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

AMQP 1.0을 사용하여 .NET에서 Service Bus 사용

Service Bus SDK 다운로드

AMQP 1.0은 Service Bus SDK 버전 2.1 이상에서 지원됩니다. http://nuget.org/packages/WindowsAzure.ServiceBus/에서 NuGet의 최신 SDK를 다운로드할 수 있습니다.

AMQP 1.0을 사용하도록 .NET 응용 프로그램 구성

기본적으로 Service Bus .NET 클라이언트 라이브러리는 SOAP 기반의 전용 프로토콜을 사용하여 Service Bus 서비스와 통신합니다. 기본 프로토콜 대신 AMQP 1.0을 사용하려면 다음 섹션에 설명된 대로 Service Bus 연결 문자열에서 명시적으로 구성해야 합니다. 이 변경 외에는 AMQP 1.0 사용 시 응용 프로그램 코드는 기본적으로 변경되지 않습니다.

현재 릴리스에는 AMQP 사용 시 지원되지 않는 몇 가지 API 기능이 있습니다. 이러한 지원되지 않는 기능은 후반에 나오는 “지원되지 않는 기능 및 제한 사항” 섹션에 나와 있습니다. 또한 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 관리 포털에서 가져온 값입니다. 자세한 내용은 Service Bus 큐 사용 방법을 참조하십시오.

AMQP를 사용하려면 연결 문자열에 ;TransportType=Amqp를 추가합니다. 이 코드는 클라이언트 라이브러리로 하여금 AMQP 1.0을 사용하여 Service Bus와 연결하도록 합니다.

메시지 직렬화

기본 프로토콜이 사용되는 .NET 클라이언트 라이브러리에서는 클라이언트 라이브러리와 Service Bus 서비스 간의 전송을 위한 BrokeredMessage 인스턴스를 직렬화하는 데 DataContractSerializer 유형을 사용합니다. AMQP 전송 모드를 사용하는 클라이언트 라이브러리에서는 BrokeredMessage를 AMQP 메시지로 직렬화하는 데 AMQP 유형 시스템이 사용됩니다. 메시지는 직렬화를 통해 수신 응용 프로그램에 의해 수신되며 해석될 수 있습니다. JMS API를 사용하여 Service Bus를 액세스하는 Java 응용 프로그램과 같이, 다른 플랫폼에서 실행 중인 응용 프로그램도 수신 응용 프로그램이 될 수 있습니다.

BrokeredMessage 인스턴스를 만들 때 .NET 개체를 생성자의 매개 변수로 제공하여 메시지 본문으로 사용할 수 있습니다. AMQP 기본 유형으로 매핑될 수 있는 개체의 경우 본문은 AMQP 데이터 유형으로 직렬화됩니다. 개체가 AMQP 기본 유형으로 직접 매핑되지 않는 경우(즉, 응용 프로그램에서 사용자 지정 유형이 정의된 경우), 개체는 DataContractSerializer를 사용하여 직렬화되며 직렬화된 바이트는 AMQP Data 메시지에 전송됩니다.

.NET 클라이언트 이외의 클라이언트와 손쉽게 상호 작용하려면 AMQP 유형으로 직접 직렬화될 수 있는 .NET 유형만 메시지 본문에 사용합니다. 다음 표에는 이러한 유형과 이에 매핑되는 AMQP 유형 시스템이 자세하게 나와 있습니다.

 

.NET 본문 개체 유형 매핑된 AMQP 유형 AMQP 본문 섹션 유형

부울

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 값

string

string

AMQP 값

System.Collections.IList

list

AMQP 값

컬렉션에 포함되는 항목은 이 표에 정의되어 있는 항목만 해당됩니다.

System.Array

array

AMQP 값

컬렉션에 포함되는 항목은 이 표에 정의되어 있는 항목만 해당됩니다.

System.Collections.IDictionary

매핑

AMQP 값

컬렉션에 포함되는 항목은 이 표에 정의되어 있는 항목만 해당됩니다.

참고: String 키만 지원됩니다.

Uri

Described string

(다음 표 참조)

AMQP 값

DateTimeOffset

Described long

(다음 표 참조)

AMQP 값

TimeSpan

Described long

(다음 표 참조)

AMQP 값

Stream

binary

AMQP Data(여러 개 있을 수 있음)

Data 섹션에는 Stream 개체에서 읽은 원시 바이트가 포함됩니다.

기타 개체

binary

AMQP Data(여러 개 있을 수 있음)

DataContractSerializer를 사용하거나 응용 프로그램에서 제공된 직렬 변환기를 사용하는 개체의 직렬화된 이진이 포함됩니다.

 

.NET 유형 매핑된 AMQP 설명식 유형 참고

Uri

<type name=봴ri?class=restricted source=봲tring>

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

</type>

Uri.AbsoluteUri

DateTimeOffset

<type name=봡atetime-offset?class=restricted source=봪ong>

<descriptor name=”net:datetime-offset” />

</type>

DateTimeOffset.UtcTicks

TimeSpan

<type name=봳imespan?class=restricted source=봪ong>

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

</type>

TimeSpan.Ticks

지원되지 않는 기능, 제한 사항 및 동작 상의 차이점

Service Bus .NET API의 다음 기능은 현재 AMQP 사용 시 지원되지 않습니다.

  • 트랜잭션.

  • 전송 대상을 통해 보내기.

  • 메시지 시퀀스 번호로 받기.

  • 메시지 및 세션 찾아보기.

  • 세션 상태.

  • 일괄 처리 기반의 API

  • 스케일 아웃된 수신

  • 구독 규칙의 런타임 조작.

  • 세션 잠금 갱신.

특히, 다음 API가 현재 AMQP 사용 시 지원되지 않습니다.

또한 AMQP를 사용할 경우에는 기본 프로토콜과 비교해 볼 때 다음과 같이 일부 Service Bus .NET API 동작이 약간 달라집니다.

  • OperationTimeout 속성이 무시됩니다.

  • MessageReceiver.Receive(TimeSpan.Zero)MessageReceiver.Receive(TimeSpan.FromSeconds(10))로 구현됩니다.

AMQP 프로토콜 설정 제어

다음과 같이 .NET API에는 AMQP 프로토콜 동작을 제어하는 몇 가지 설정이 있습니다.

  • MessageReceiver.PrefetchCount: 링크에 적용되는 초기 신용도를 제어합니다. 기본값은 0입니다.

  • MessagingFactorySettings.AmqpTransportSettings.MaxFrameSize: 연결 협상 시 제공되는 최대 AMQP 프레임 크기를 제어합니다. 기본값은 65,536바이트입니다.

  • MessagingFactorySettings.AmqpTransportSettings.BatchFlushInterval: 전송이 일괄 처리될 수 있는 경우 이 값은 발신 처리의 최대 지연 시간을 결정합니다. 기본적으로 발신자/수신자의 설정값이 사용됩니다. 개별 발신자/수신자가 기본값(20밀리초)을 재설정할 수 있습니다.

  • MessagingFactorySettings.AmqpTransportSettings.UseSslStreamSecurity: AMQP 연결이 SSL 연결을 통해 설정되는지 여부를 제어합니다. 기본값은 true입니다.

커뮤니티 추가 항목

표시:
© 2014 Microsoft