Microsoft Azure Service Bus에서 AMQP 1.0: Microsoft Azure Service Bus 요청/응답 기반 작업

이 문서에서는 Microsoft Azure Service Bus 요청/응답 기반 작업 목록을 정의합니다. 이 정보는 AMQP Management Version 1.0 초안을 기반으로 합니다.

Service Bus가 OASIS AMQP 기술 사양을 구현하고 빌드하는 방법을 설명하는 자세한 유선 수준 AMQP 1.0 프로토콜 가이드는 Azure Service Bus 및 Event Hubs 프로토콜 가이드의 AMQP 1.0을 참조하세요.

개념

ServiceBusReceivedMessage / ServiceBusMessage

AMQP 메시지에 매핑되는 Service Bus의 메시지를 나타냅니다. 이 매핑은 Service Bus AMQP 프로토콜 가이드에서 정의됩니다.

엔터티 관리 노드에 연결

이 문서에 설명된 모든 작업은 요청/응답 패턴을 따르며 엔터티로 범위가 지정되며 엔터티 관리 노드에 연결되어야 합니다.

요청 전송을 위해 관리 노드에 대한 링크를 만듭니다.

requestLink = session.attach(
role: SENDER,
   	target: { address: "<entity address>/$management" },
   	source: { address: ""<my request link unique address>" }
)

관리 노드에서 응답 수신을 위한 링크를 만듭니다.

responseLink = session.attach(
role: RECEIVER,
	source: { address: "<entity address>/$management" }
   	target: { address: "<my response link unique address>" }
)

요청 메시지 전송

요청 메시지를 전송합니다.
트랜잭션을 지원하는 작업에 대한 옵션으로 트랜잭션 상태를 추가할 수 있습니다.

requestLink.sendTransfer(
        Message(
                properties: {
                        message-id: <request id>,
                        reply-to: "<my response link unique address>"
                },
                application-properties: {
                        "operation" -> "<operation>",
                }
        ),
        [Optional] State = transactional-state: {
                txn-id: <txn-id>
        }
)

응답 메시지 수신

응답 링크에서 응답 메시지를 수신합니다.

responseMessage = responseLink.receiveTransfer()

응답 메시지는 다음 형식으로 되어 있습니다.

Message(
properties: {
		correlation-id: <request id>
	},
	application-properties: {
			"statusCode" -> <status code>,
			"statusDescription" -> <status description>,
           },
)

Service Bus 엔터티 주소

Service Bus 엔터티 주소는 다음과 같아야 합니다.

엔터티 형식 주소 예시
queue <queue_name> “myQueue”

“site1/myQueue”
토픽 <topic_name> “myTopic”

“site2/page1/myQueue”
구독 <topic_name>/Subscriptions/<subscription_name> “myTopic/Subscriptions/MySub”

메시지 작업

메시지 갱신 잠금

큐 또는 구독에 설정된 잠금 기간을 기준으로 메시지 잠금을 확장합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:renew-lock
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 맵을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
lock-tokens uuid의 배열 갱신할 메시지 잠금 토큰입니다.

참고 항목

여기에서 잠금 토큰은 수신된 AMQP 메시지의 delivery-tag 속성을 나타냅니다. 지연된 메시지를 수신하고 해당 잠금을 갱신하려면 delivery-tag 대신 메시지에 있는 속성 lock-token을 사용합니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 맵을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
만료 타임 스탬프 배열 요청 잠금 토큰에 해당하는 메시지 잠금 토큰 새 만료입니다.

메시지 보기

잠그지 않고 메시지를 봅니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
from-sequence-number long 보기를 시작할 시퀀스 번호입니다.
message-count int 보려는 최대 메시지 수입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 더 많은 메시지가 있음

204: 콘텐츠 없음 – 더 이상 메시지가 없음
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
messages 맵 목록 모든 맵이 메시지를 나타내는 메시지 목록입니다.

메시지를 나타내는 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
message 바이트 배열 AMQP 1.0 실시간 인코딩된 메시지입니다.

메시지 예약

메시지를 예약합니다. 이 작업은 트랜잭션을 지원합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:schedule-message
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
messages 맵 목록 모든 맵이 메시지를 나타내는 메시지 목록입니다.

메시지를 나타내는 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
message-id string string으로 amqpMessage.Properties.MessageId
session-id string 아니요 amqpMessage.Properties.GroupId as string
partition-key string 아니요 amqpMessage.MessageAnnotations.”x-opt-partition-key"
via-partition-key string 아니요 amqpMessage.MessageAnnotations."x-opt-via-partition-key"
message 바이트 배열 AMQP 1.0 실시간 인코딩된 메시지입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 맵을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
시퀀스 번호 long 배열 예약된 메시지의 시퀀스 번호입니다. 시퀀스 번호는 취소하는 데 사용됩니다.

예약된 메시지 취소

예약된 메시지를 취소합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:cancel-scheduled-message
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
시퀀스 번호 long 배열 취소할 예약된 메시지의 시퀀스 번호입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

세션 작업

세션 갱신 잠금

큐 또는 구독에 설정된 잠금 기간을 기준으로 메시지 잠금을 확장합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:renew-session-lock
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
session-id string 세션 ID.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 더 많은 메시지가 있음

204: 콘텐츠 없음 – 더 이상 메시지가 없음
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 맵을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
expiration timestamp 새 만료.

세션 메시지 보기

잠그지 않고 세션 메시지를 봅니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
from-sequence-number long 보기를 시작할 시퀀스 번호입니다.
message-count int 보려는 최대 메시지 수입니다.
session-id string 세션 ID.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 더 많은 메시지가 있음

204: 콘텐츠 없음 – 더 이상 메시지가 없음
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 맵을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
messages 맵 목록 모든 맵이 메시지를 나타내는 메시지 목록입니다.

메시지를 나타내는 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
message 바이트 배열 AMQP 1.0 실시간 인코딩된 메시지입니다.

세션 상태 설정

세션 상태를 설정합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:set-session-state
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
session-id string 세션 ID.
session-state 바이트 배열 불투명한 이진 본문.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

세션 상태 가져오기

세션 상태를 가져옵니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:get-session-state
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
session-id string 세션 ID.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
session-state 바이트 배열 불투명한 이진 본문.

세션 열거

메시지 엔터티에서 세션을 열거합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:get-message-sessions
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
last-updated-time timestamp 지정된 시간 이후 업데이트된 세션만 포함하도록 필터링합니다.
skip int 세션 수를 건너뜁니다.
최고 int 최대 세션 수입니다.

참고 항목

.NET에서 설정 DateTime.MaxValueLastUpdatedTime 하면 열거 세션 메서드는 상태 여부에 관계없이 모든 세션을 반환합니다. DateTime.MaxValue .NET의 다른 프로그래밍 언어에는 존재하지 않을 수 있습니다. 이러한 경우 .NET에 해당하는 Epoch(1970년 1월 1일, 00:00:00 GMT)의 밀리초와 동일한 253402300800000DateTime.MaxValue 타임스탬프를 사용합니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 더 많은 메시지가 있음

204: 콘텐츠 없음 – 더 이상 메시지가 없음
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
skip int 상태 코드가 200인 경우 건너뛴 세션 수입니다.
sessions-ids 문자열 배열 상태 코드가 200인 경우 세션 ID 배열입니다.

규칙 작업

규칙 추가

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:add-rule
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
rule-name string 구독 및 토픽 이름을 포함하지 않는 규칙 이름입니다.
rule-description map 다음 섹션에 지정된 대로 규칙 설명입니다.

rule-description 맵은 다음 엔터티를 포함해야 합니다. 여기서 sql-filtercorrelation-filter는 상호 배타적입니다.

값 유형 Required 값 내용
sql-filter map 다음 섹션에 지정된 대로 sql-filter입니다.
correlation-filter map 다음 섹션에 지정된 대로 correlation-filter입니다.
sql-rule-action map 다음 섹션에 지정된 대로 sql-rule-action입니다.

sql-filter 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
string Sql 필터 식.

correlation-filter 맵은 다음 항목을 하나 이상 포함해야 합니다.

값 유형 Required 값 내용
correlation-id string 아니요
message-id string 아니요
to string 아니요
reply-to string 아니요
label string 아니요
session-id string 아니요
reply-to-session-id string 아니요
content-type string 아니요
속성 map 아니요 Service Bus ServiceBusMessage.Properties로 매핑

sql-rule-action 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
string Sql 작업 식.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

규칙 제거

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:remove-rule
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
rule-name string 구독 및 토픽 이름을 포함하지 않는 규칙 이름입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

규칙 가져오기

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:enumerate-rules
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
최고 int 페이지에 페치할 규칙의 수입니다.
skip int 건너뛸 규칙의 수입니다. 규칙의 목록에서 시작하는 인덱스(+1)을 정의합니다.

응답

응답 메시지에는 다음과 같은 속성이 포함됩니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
rules 맵 목록 규칙 목록 각 규칙은 맵으로 표시됩니다.

목록의 각 맵 항목에는 다음과 같은 속성이 포함됩니다.

값 유형 Required 값 내용
rule-description 설명된 개체 AMQP 설명 코드 0x0000013700000004가 포함된 com.microsoft:rule-description

com.microsoft.rule-description 설명된 목록입니다. 해당 속성은 다음과 같습니다.

색인 값 유형 Required 값 내용
0 설명된 목록 다음 테이블에 지정된 대로 filter입니다.
1 설명된 목록 이 섹션의 뒷부분에서 지정된 대로 ruleAction입니다.
2 string 규칙의 이름입니다.
3 timestamp 타임스탬프

filter는 다음 유형 중 하나일 수 있습니다.

설명자 이름 설명자 코드
com.microsoft:sql-filter:list 0x000001370000006 SQL 필터
com.microsoft:correlation-filter:list 0x000001370000009 상관 관계 필터
com.microsoft:true-filter:list 0x000001370000007 1 = 1을 나타내는 true 필터
com.microsoft:false-filter:list 0x000001370000008 1 = 0을 나타내는 false 필터

com.microsoft:sql-filter:list는 다음을 포함하는 설명된 목록입니다.

색인 값 유형 Required 값 내용
0 string SQL 필터 식
1 int 항상 20입니다. 이 정수는 sql 필터의 호환성 수준입니다. sql 필터의 구문 버전을 나타냅니다.

com.microsoft:correlation-filter:list는 다음을 포함하는 설명된 목록입니다.

인덱스(존재하는 경우) 값 유형 값 내용
0 string 상관 관계 ID
1 문자열 메시지 ID
2 string To
3 string 회신 대상
4 string Label
5 string 세션 ID
6 string 세션 ID에 회신
7 string 콘텐츠 유형
8 지도 애플리케이션 정의 속성의 맵

ruleAction은 다음 유형 중 하나일 수 있습니다.

설명자 이름 설명자 코드
com.microsoft:empty-rule-action:list 0x0000013700000005 빈 규칙 동작 - 규칙 작업이 존재하지 않음
com.microsoft:sql-rule-action:list 0x0000013700000006 SQL 규칙 동작

com.microsoft:sql-rule-action:list는 두 개의 요소가 있는 설명된 목록입니다.

색인 값 유형 Required 값 내용
0 string SQL 규칙 동작의 식
1 int 항상 20입니다. 이 정수는 sql 필터의 호환성 수준입니다. sql 필터의 구문 버전을 나타냅니다.

지연된 메시지 작업

시퀀스 번호로 받기

시퀀스 번호로 지연된 메시지를 받습니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:receive-by-sequence-number
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
시퀀스 번호 long 배열 시퀀스 번호.
receiver-settle-mode ubyte AMQP 코어 v1.0에 지정된 대로 수신기 장착 모드입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

응답 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
messages 맵 목록 모든 맵이 메시지를 나타내는 메시지 목록입니다.

메시지를 나타내는 맵은 다음 항목을 포함해야 합니다.

값 유형 Required 값 내용
lock-token uuid receiver-settle-mode가 1인 경우 토큰을 잠급니다.
message 바이트 배열 AMQP 1.0 실시간 인코딩된 메시지입니다.

처리 상태 업데이트

지연된 메시지의 처리 상태를 업데이트합니다. 이 작업은 트랜잭션을 지원합니다.

요청

요청 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
operation string com.microsoft:update-disposition
com.microsoft:server-timeout uint 아니요 작업 서버 제한 시간(밀리초)입니다.

요청 메시지 본문은 다음 엔터티와 함께 을 포함하는 amqp-value 섹션으로 구성되어야 합니다.

값 유형 Required 값 내용
disposition-status string 완료됨

중단됨

일시 중단됨
lock-tokens uuid의 배열 처리 상태를 업데이트할 메시지 잠금 토큰입니다.
deadletter-reason string 아니요 처리 상태 일시 중단으로 설정된 경우 설정됩니다.
deadletter-description string 아니요 처리 상태 일시 중단으로 설정된 경우 설정됩니다.
properties-to-modify map 아니요 수정할 Service Bus broker 저장 메시지 목록입니다.

응답

응답 메시지에는 다음과 같은 애플리케이션 속성이 포함되어야 합니다.

값 유형 Required 값 내용
statusCode int HTTP 응답 코드 [RFC2616]

200: OK – 성공, 그렇지 않으면 실패입니다.
statusDescription string 아니요 상태에 대한 설명입니다.

다음 단계

AMQP 및 Service Bus에 대해 자세히 알아보려면 다음 링크를 방문하세요.