MQRFH2 헤더에는 메시지 브로커가 메시지를 처리하고 해당 고객에게 메시지를 전달하고 publish할 수 있도록 하는 메시지 구조 및 예상 고객에 대한 정보가 있습니다.
'MQRFH2' 값은 선행 헤더(일반적으로 MQMD)의 형식 필드에 넣어야 합니다. MQFMT_RF_HEADER_2 상수는 이 값으로 정의됩니다.
C 프로그래밍 언어의 경우, MQFMT_RF_HEADER_2_ARRAY 상수 또한 정의됩니다. 이 상수는 MQFMT_RF_HEADER_2와 동일하지만, 문자열이 아닌 문자 배열입니다.
MQRFH2 헤더의 문자 세트 및 필드 인코딩은 다음과 같습니다.
일부 문자 세트는 인코딩에 의거한 표현을 가집니다. NameValueCCSID가 이러한 문자 세트 중 하나를 정의하는 경우, NameValueData가 MQRFH2 헤더의 다른 필드와 동일한 인코딩으로 되어야 있어야 합니다.
MQRFH2 헤더에는 다음 필드가 포함됩니다.
필드 이름 | 설명 | 세부사항 |
---|---|---|
StrucId | 구조 ID | 값은 규칙 및 형식화 헤더 구조의 ID인 MQRFH_STRUC_ID여야 합니다. C 프로그래밍의 경우, MQRFH_STRUC_ID_ARRAY 상수 또한 정의됩니다. 이 상수는 MQRFH_STRUC_ID와 동일하지만, 문자열이 아닌 문자 배열입니다. |
버전 | 구조 버전 번호 | 값은 버전 2 규칙 및 형식화 헤더 구조인 MQRFH_VERSION_2여야 합니다. |
Struclength | MQRFH2의 총 길이(NameValueData 포함) | 이 필드의 초기값은 MQRFH_STRUC_LENGTH_FIXED_2로서, MQRFH2 헤더 구조의 고정 부분 길이입니다. 구조 끝의 NameValueLength 및 NameValueData 필드를 포함하는 MQRFH2 헤더 구조의 바이트 단위 길이입니다. 구조의 끝에는 해당 필드의 둘 이상의 쌍이 순서대로(length1, data1, length2, data2) 올 수 있습니다. 구조의 끝에 마지막 NameValueData 필드 다음에 오는 사용자 데이터의 길이는 StrucLength에 포함되지 않습니다. 주: Struclength가 4의 배수가 아니면, 일부 운영 체제 환경에서
사용자 데이터의 데이터 변환에 문제가 발생할 수 있습니다.
|
인코딩 | NameValueData 다음의 데이터 숫자 인코딩 | 이 필드의 초기값은 MQENC_NATIVE입니다. 이 필드는 마지막 NameValueData 필드 다음의 데이터 숫자 값이 표시되는 방식을 지정합니다. 이는 2진 정수 데이터, 팩 10진수 데이터, 부동 소수점 데이터에 적용됩니다. |
CodedCharSetId | NameValueData 다음의 데이터 문자 세트 ID | 이 필드의 초기값은 MQCCSI_INHERIT로서, 문자 세트 ID가 현재 구조의 ID와 동일함을 의미합니다. 이 필드는 마지막 NameValueData 필드 다음에 오는 데이터의 문자열에 대한 코딩된 문자 세트를 나타냅니다. |
형식 | NameValueData 다음의 데이터 형식 이름 | 이 필드의 초기값은 MQFMT_NONE입니다. 이 필드는 마지막 NameValueData 필드 다음의 데이터 형식 이름을 지정합니다. 이름은 필드 길이까지 공백으로 채워져야 합니다. 주: 필드의 끝 앞에서 이름을 종료하기 위해 널(null) 문자를 사용하지 마십시오.
큐 관리자는 MQRFH2 헤더에서 널(null) 문자나 널(null) 문자 다음의 문자를 공백 문자로
바꾸지 않습니다.
주: 선두 문자 또는 임베드된 공백 문자가 있는 이름을 지정하지 마십시오.
|
플래그 | Flags | 이 필드의 초기값은 MQRFH_NONE으로서, 플래그가 없음을 의미합니다. |
NameValueCCSID | NameValueData의 문자 세트 ID | 이 필드의 초기값은 1208로서, UTF-8 코드화 문자 세트가 사용됨을 의미합니다. 이 필드는 NameValueData 필드의 데이터에 대한 코드화 문자 세트를 나타냅니다. 이 필드는 MQRFH2 헤더 구조의 다른 문자열의 문자 세트와 다르고 마지막 NameValueData 필드 다음에 오는 문자 데이터의 문자 세트와도 다릅니다. NameValueCCSID는 다음 값 중 하나를 가집니다. 1200: UCS-2 open-ended 1208: UTF-8 13488: UCS-2 2.0 서브세트 17584: UCS-2 2.1 서브세트(유로 기호 € 포함) UCS-2 문자 세트의 경우, NameValueData 필드의 인코딩(바이트 순서)은 MQRFH2 헤더 구조의 다른 필드 인코딩과 같아야 합니다. 주: 대리 문자(X'D800' - X'DFFF')는 지원되지 않습니다.
|
다음 두 필드는 선택적이지만 값을 지정할 경우 쌍으로 나타나야 합니다. 필요한 만큼 쌍으로 반복될 수 있습니다. 필드가 두 번 이상 나타날 경우, length1, data1, length2, data2, ....... |
||
NameValueLength | NameValueData의 길이 | 이 필드는 이 필드 다음에 오는 NameValueData 필드의 길이(바이트 단위)를 지정합니다. 주: NameValueLength가
4의 배수가 아니면, NameValueData 필드 다음에 오는 데이터 변환에 문제가 발생할 수 있습니다.
|
NameValueData | XML식 구조를 사용하여 인코딩된 데이터가 들어 있는 가변 길이 문자열입니다. | 이 문자열의 길이(바이트 단위)는 이 NameValueData 필드 앞에 오는 NameValueLength 필드에 표시됩니다. NameValueLength 필드에 대한 설명이 있는 참고에 설명된 문제점을 피하려면 이 필드를 공백으로 확장하여 길이가 4의 배수가 되도록 하거나 필드를 널(null) 문자로 종결하십시오. |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Structure identifier */ MQLONG Version; /* Structure version number */ MQLONG StrucLength; /* Total length of MQRFH2 including */ MQLONG Encoding; /* Numeric encoding of data that follows */ MQLONG CodedCharSetId; /* Character set identifier of data that follows NameValueData */ MQCHAR8 Format; /* Format name of data that follows */ MQLONG Flags; /* Flags */ MQLONG NameValueCCSID; /* Character set identifier of NameValueData */ } MQRFH2;