11장. 상호 운용성
이 장에서는 다른 AMQ 구성 요소와 함께 AMQ JMS를 사용하는 방법에 대해 설명합니다. AMQ 구성 요소의 호환성 개요는 제품 소개 를 참조하십시오.
11.1. 다른 AMQP 클라이언트와 상호 작용
AMQP 메시지는 AMQP 유형 시스템을 사용하여 구성됩니다. 이러한 공통 형식을 갖는 것은 다른 언어의 AMQP 클라이언트가 서로 상호 운용할 수 있는 이유 중 하나입니다. 이 섹션은 다른 AMQP 클라이언트와 함께 클라이언트 사용을 지원하기 위해 사용되는 다양한 JMS Message 유형과 관련하여 클라이언트에서 전송 및 수신한 AMQP 페이로드 관련 동작을 문서화하는 역할을 합니다.
11.1.1. 메시지 전송
이 섹션에서는 다양한 JMS Message 유형을 사용할 때 클라이언트가 전송한 다양한 페이로드를 문서화하여 다른 클라이언트를 사용하여 수신할 수 있도록 지원합니다.
11.1.1.1. 메시지 유형
JMS 메시지 유형 | 전송된 AMQP 메시지의 설명 |
---|---|
textMessage는 본문 텍스트의 utf8 인코딩 문자열 을 포함하는 amqp-value body 섹션을 사용하거나 본문 텍스트가 설정되지 않은 경우 null 로 전송됩니다. "x-opt-jms-msg-type"의 기호 키가 있는 메시지 주석은 바이트 값 5로 설정됩니다. | |
CryostatsMessage는 properties 섹션의 content-type 필드가 기호 값 "application/octet-stream" 으로 설정되어 있는 data body 섹션을 사용하여 전송됩니다. "x-opt-jms-msg-type"의 기호 키가 있는 메시지 주석은 바이트 값 3으로 설정됩니다. | |
MapMessage 본문은 단일 맵 값을 포함하는 amqp-value body 섹션을 사용하여 전송됩니다. MapMessage 본문의 모든 byte[] 값은 맵의 바이너리 항목으로 인코딩됩니다. "x-opt-jms-msg-type" 기호 키가 있는 메시지 주석은 바이트 값 2로 설정됩니다. | |
StreamMessage는 StreamMessage 본문의 항목이 포함된 amqp-sequence 본문 섹션을 사용하여 전송됩니다. StreamMessage 본문의 모든 byte[] 항목은 시퀀스의 바이너리 항목으로 인코딩됩니다. "x-opt-jms-msg-type"의 기호 키가 있는 메시지 주석은 바이트 값 4로 설정됩니다. | |
ObjectMessage는 ObjectOutputStream을 사용하여 ObjectMessage 본문을 직렬화하는 바이트를 포함하는 데이터 본문 섹션을 사용하여 전송됩니다. properties 섹션 content-type 필드가 기호 값 "application/x-java-serialized-object" 로 설정되어 있습니다. "x-opt-jms-msg-type" 기호 키가 있는 메시지 주석은 바이트 값 1로 설정됩니다. | |
일반 JMS 메시지에는 본문이 없으며 null 이 포함된 amqp-value body 섹션으로 전송됩니다. "x-opt-jms-msg-type" 기호 키가 있는 메시지 주석은 바이트 값 0으로 설정됩니다. |
11.1.1.2. 메시지 속성
JMS 메시지는 다양한 Java 유형의 애플리케이션 속성을 설정할 수 있도록 지원합니다. 이 섹션에서는 전송된 메시지의 application-properties 섹션에 있는 AMQP 형식 값에 대한 이러한 속성 유형의 매핑을 표시하는 역할을 합니다. JMS 및 AMQP는 모두 속성 이름에 문자열 키를 사용합니다.
JMS 속성 유형 | AMQP 애플리케이션 속성 유형 |
---|---|
boolean | |
byte | |
short | |
int | |
long | |
플로트 | |
double | |
문자열 |
11.1.2. 메시지 수신
이 섹션은 클라이언트가 수신한 다양한 페이로드를 문서화하는 역할을 하며 JMS 클라이언트에서 수신하기 위해 다른 클라이언트를 사용하여 메시지를 보내는 데 도움이 되도록 다양한 JMS 메시지 유형에 매핑됩니다.
11.1.2.1. 메시지 유형
다음 표에 설명된 매핑에 따라 "x-opt-jms-msg-type" message-annotation이 수신된 AMQP 메시지에 있는 경우 해당 값은 다음 표에 설명된 매핑에 따라 이를 나타내는 데 사용되는 JMS 메시지 유형을 결정하는 데 사용됩니다. 이는 JMS 클라이언트에서 전송한 메시지에 대해 설명된 매핑의 역방향 프로세스를 반영합니다.
AMQP "x-opt-jms-msg-type" message-annotation value (type) | JMS 메시지 유형 |
---|---|
0 (byte) | |
1 (바이트) | |
2 (바이트) | |
3 (바이트) | |
4 (바이트) | |
5 (바이트) |
"x-opt-jms-msg-type" message-annotation이 없으면 아래 표에서 메시지를 JMS 메시지 유형에 매핑하는 방법을 자세히 설명합니다. StreamMessage 및 MapMessage 유형은 주석이 달린 메시지에만 할당됩니다.
"x-opt-jms-msg-type" 주석이 없는 Received AMQP 메시지에 대한 설명 | JMS 메시지 유형 |
---|---|
| |
| |
|
11.1.2.2. 메시지 속성
이 섹션에서는 수신된 AMQP 메시지의 application-properties 섹션에 있는 값 매핑을 JMS Message에 사용된 Java 유형에 표시하는 역할을 합니다.
AMQP 애플리케이션 속성 유형 | JMS 속성 유형 |
---|---|
boolean | |
byte | |
short | |
int | |
long | |
플로트 | |
double | |
문자열 | |
문자열 |