AMQP 1.0과 함께 레거시 WindowsAzure.ServiceBus .NET 프레임워크 라이브러리 사용

참고 항목

이 문서는 동일한 패키지 내에서 AMQP 사용으로 전환하려는 WindowsAzure.ServiceBus 패키지의 기존 사용자를 위한 것입니다. 이 패키지는 2026년 9월 30일까지 중요한 버그 수정을 계속 받을 수 있지만, 2020년 11월부터 사용할 수 있고 기본적으로 AMQP를 지원하는 새 Azure.Messaging.ServiceBus 패키지로 업그레이드하는 것이 좋습니다.

2026년 9월 30일에 Azure SDK 지침을 준수하지 않는 Azure Service Bus SDK 라이브러리 WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus 및 com.microsoft.azure.servicebus를 사용 중지합니다. 또한 SBMP 프로토콜의 지원도 종료되므로 2026년 9월 30일 이후에는 더 이상 이 프로토콜을 사용할 수 없습니다. 해당 날짜 이전에 중요한 보안 업데이트 및 향상된 기능을 제공하는 최신 Azure SDK 라이브러리로 마이그레이션합니다.

이전 라이브러리는 2026년 9월 30일 이후에도 계속 사용할 수 있지만 더 이상 Microsoft에서 공식 지원 및 업데이트를 받지 않습니다. 자세한 내용은 사용 중지 공지 지원을 참조하세요.

기본적으로 WindowsAzure.ServiceBus 패키지는 SBMP(Service Bus 메시징 프로토콜)라는 전용 SOAP 기반 프로토콜을 사용하여 Service Bus 서비스와 통신합니다. 버전 2.1에서는 기본 프로토콜 대신 사용하는 것이 좋습니다. AMQP 1.0에 대한 지원이 추가되었습니다.

기본 프로토콜 대신 AMQP 1.0을 사용하려면 Service Bus 연결 문자열에서 또는 TransportType 옵션을 통해 클라이언트 생성자에서 이를 명시적으로 구성해야 합니다. 이 변경 외에 AMQP 1.0을 사용하는 경우 애플리케이션 코드는 변경되지 기본.

AMQP를 사용할 때 지원되지 않는 몇 가지 API 기능이 있습니다. 지원되지 않는 이러한 기능은 동작 차이점 섹션 에 나열됩니다. AMQP를 사용하는 경우 몇 가지 고급 구성 설정도 다른 의미를 가집니다.

AMQP 1.0을 사용하도록 연결 문자열 구성

AMQP ;TransportType=Amqp 1.0을 사용하여 Service Bus에 연결하도록 클라이언트에 지시하도록 연결 문자열 추가합니다. 예를 들면 다음과 같습니다.

Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=Amqp

Service Bus 네임스페이스를 만들 때 Azure Portal에서 가져오는 위치 namespaceSAS key 위치입니다. 자세한 내용은 Azure Portal을 사용하여 Service Bus 네임스페이스 만들기를 참조 하세요.

Websocket 통한 AMQP

WebSocket을 통해 AMQP를 사용하려면 연결 문자열 AmqpWebSockets설정합니다TransportType. 예: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets

메시지 serialization

기본 프로토콜을 사용하는 경우 .NET 클라이언트 라이브러리의 기본 serialization 동작은 DataContractSerializer 형식을 사용하여 클라이언트 라이브러리와 Service Bus 서비스 간의 전송을 위해 BrokeredMessage 인스턴스를 직렬화하는 것입니다. AMQP 전송 모드를 사용하는 경우 클라이언트 라이브러리는 AMQP 형식 시스템을 사용하여 조정된 메시지를 AMQP 메시지로 serialization합니다. 이 serialization을 사용하면 JMS API를 사용하여 Service Bus에 액세스하는 Java 애플리케이션과 같이 잠재적으로 다른 플랫폼에서 실행 중인 수신 애플리케이션에서 메시지를 수신하고 해석할 수 있습니다.

BrokeredMessage 인스턴스를 생성할 때 .NET 개체를 생성자에 매개 변수로 제공하여 메시지 본문으로 사용할 수 있습니다. AMQP 기본 형식에 매핑할 수 있는 개체의 경우 본문은 AMQP 데이터 형식으로 직렬화됩니다. 개체를 AMQP 기본 형식으로 직접 매핑할 수 없는 경우 즉, 애플리케이션에서 정의된 사용자 지정 형식이며 개체는 DataContractSerializer를 사용하여 직렬화되고 직렬화된 바이트는 AMQP 데이터 메시지로 전송됩니다.

non-.NET 클라이언트와의 상호 운용성을 용이하게 하려면 메시지 본문에 대한 AMQP 형식으로 직접 직렬화할 수 있는 .NET 형식만 사용합니다. 다음 표에서는 이러한 형식과 AMQP 형식 시스템에 대한 해당 매핑에 대해 자세히 설명합니다.

.NET 본문 개체 형식 매핑된 AMQP 형식 AMQP 본문 섹션 유형
부울 부울 값 AMQP 값
바이트 ubyte AMQP 값
ushort ushort AMQP 값
uint uint AMQP 값
ulong ulong AMQP 값
sbyte 바이트 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 배열 AMQP 값: 컬렉션에 포함된 항목은 이 테이블에 정의된 항목만 될 수 있습니다.
System.Collections.IDictionary map AMQP 값: 컬렉션에 포함된 항목은 이 테이블에 정의된 항목만 될 수 있습니다. 참고: 문자열 키만 지원됩니다.
URI 설명된 문자열(다음 표 참조) AMQP 값
DateTimeOffset 긴 설명(다음 표 참조) AMQP 값
TimeSpan 긴 설명(다음 참조) AMQP 값
스트림 binary AMQP 데이터(여러 데이터일 수 있음). 데이터 섹션에는 Stream 개체에서 읽은 원시 바이트가 포함됩니다.
기타 개체 binary AMQP 데이터(여러 데이터일 수 있음). DataContractSerializer 또는 애플리케이션에서 제공하는 serializer를 사용하는 개체의 직렬화된 이진 파일을 포함합니다.
.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를 사용하는 경우 기본 프로토콜에 비해 WindowsAzure.ServiceBus API의 동작에 몇 가지 작은 차이점이 있습니다.

  • OperationTimeout 속성은 무시됩니다.
  • MessageReceiver.Receive(TimeSpan.Zero) 는 .로 MessageReceiver.Receive(TimeSpan.FromSeconds(10))구현됩니다.
  • 잠금 토큰으로 메시지를 완료하는 작업은 처음에 메시지를 받은 메시지 수신자만 수행할 수 있습니다.

AMQP 프로토콜 설정 제어

.NET API는 AMQP 프로토콜의 동작을 제어하는 몇 가지 설정을 노출합니다 .

다음 단계

자세히 알아볼 준비가 되셨나요? 다음 링크를 방문하세요.