[MQ 9.2.0 2020년 7월]

POST

HTTP POST 메소드를 /messaging/qmgr/{qmgrName}/topic/{topicString}/message 자원과 함께 사용하여 지정된 큐 관리자의 지정된 토픽에 메시지를 발행할 수 있습니다.

HTTP 요청 본문의 텍스트 기반을 지정된 큐 관리자 및 토픽에 넣습니다. 큐 관리자는 mqweb 서버와 같은 시스템에 있어야 하고 텍스트 기반 메시지만 지원됩니다. 메시지는 현재 사용자 컨텍스트를 사용하여 MQSTR 또는 JMS TextMessage 형식화된 메시지로 발행되며, 기본 메시지 우선순위는 REST API V2의 경우 4, REST API V3의 경우 asDestination입니다.

[MQ 9.2.5 2022년 12월]REST API V3는 사용자 정의 메시지 특성을 지정하고 메시지 우선순위를 포함하는 기능을 추가합니다. ibm-mq-md-priority 및 ibm-mq-usr 요청 헤더는 REST API V3에서만 사용할 수 있습니다. REST API V3에서 ibm-mq-md-correlationId 요청 헤더의 형식은 다릅니다. 헤더는 애플리케이션 특정 ID이거나 인코딩된 문자열인 경우 ID: 접두부가 필요합니다. POST 요청에 사용자 정의 메시지 또는 애플리케이션 특정 상관 ID가 포함된 경우 메시지는 JMS TextMessage로 형식화됩니다.

자원 URL

https://host:port/ibmmq/rest/v2/messaging/qmgr/{qmgrName}/topic/{topicString}/message

[MQ 9.2.5 2022년 12월]https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/topic/{topicString}/message

qmgrName
메시징에 연결할 큐 관리자의 이름을 지정합니다. 큐 관리자는 mqweb 서버와 같은 시스템에 있어야 합니다.
큐 관리자 이름은 대소문자를 구분합니다.
큐 관리자 이름에 슬래시, 마침표 또는 퍼센트 부호가 포함되는 경우 해당 문자는 인코딩된 URL이어야 합니다.
  • 슬래시는 %2F(으)로 인코딩되어야 합니다.
  • 마침표는 %2E(으)로 인코딩되어야 합니다.
  • 백분율 기호는 %25(으)로 인코딩되어야 합니다.
topicString
메시지를 넣을 토픽 문자열을 지정합니다.
토픽 문자열은 대소문자를 구분합니다. 토픽 문자열에는 슬래시 구분 기호로 구분된 여러 토픽 레벨이 포함될 수 있습니다.
토픽 문자열에 백분율 기호, 마침표 또는 물음표가 포함된 경우 이러한 문자는 URL로 인코딩되어야 합니다.
  • 백분율 기호는 %25(으)로 인코딩되어야 합니다.
  • 마침표는 %2E(으)로 인코딩되어야 합니다.
  • 물음표는 %3F(으)로 인코딩되어야 합니다.
토픽 문자열이 슬래시로 시작하거나 끝나는 경우 %2F(으)로 인코딩되어야 합니다.
예를 들어, 토픽 문자열을 발행하려면 다음을 수행합니다.
  • MY.QMGR 큐 관리자의 sport/football에서는 다음 URL을 사용합니다.
    https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/MY%2EQMGR/topic/sport/football/message
  • MY.QMGR 큐 관리자의 /sport/football에서는 다음 URL을 사용합니다.
    https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/MY%2EQMGR/topic/%2Fsport/football/message

HTTP 연결을 사용으로 설정하는 경우 HTTPS 대신 HTTP를 사용할 수 있습니다. HTTP 사용에 대한 자세한 정보는 HTTP및 HTTPS 포트 구성을 참조하십시오.

요청 헤더

다음 헤더를 요청과 함께 전송해야 합니다.
권한 부여
기본 인증을 사용하는 경우 이 헤더를 송신해야 합니다. 자세한 정보는 REST API에서 HTTP 기본 인증 사용을 참조하십시오.
Content-Type
이 헤더는 다음 값 중 하나로 송신해야 합니다.
  • text/plain;charset=utf-8
  • text/html;charset=utf-8
  • text/xml;charset=utf-8
  • application/json;charset=utf-8
  • application/xml;charset=utf-8
참고: Context-Type 헤더에서 charset 가 생략되면 UTF-8 가 가정됩니다.
ibm-mq-rest-csrf-token
이 헤더가 설정되어야 하지만 값은 공백을 포함한 어떤 값도 될 수 있습니다.
다음 헤더를 요청과 함께 선택적으로 전송할 수 있습니다.
Accept-Language
이 헤더는 응답 메시지 본문에서 리턴되는 예외 또는 오류 메시지의 필수 언어를 지정합니다.
ibm-mq-md-expiry
이 헤더는 작성된 메시지의 만기 지속 기간을 설정합니다. 메시지의 만기는 메시지가 큐 관리자에 도착하는 시간부터 시작됩니다. 결과 네트워크 지연이 무시됩니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
무제한
메시지가 만료되지 않습니다.
이 값이 기본값입니다.
정수 값
메시지 만기까지 시간(밀리초).
0 - 99999999900 범위로 제한됩니다.
ibm-mq-md-persistence
이 헤더는 작성된 메시지의 지속성을 설정합니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
nonPersistent
시스템 장애 또는 큐 관리자 재시작 시 메시지가 지속되지 않습니다.
이 값이 기본값입니다.
지속적
메시지는 시스템 실패 또는 큐 관리자 재시작에서 지속됩니다.
[MQ 9.2.5 2022년 12월][REST API v3]ibm-mq-md-priority
이 헤더는 작성된 메시지의 우선순위를 설정합니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
asDestination
메시지는 기본 IBM® MQ 큐 오브젝트의 DEFPRTY 속성에 지정된 우선순위를 사용합니다.
정수 값
0 - 9 범위의 정수로 실제 우선순위를 지정하십시오.
예를 들면, 다음과 같습니다.
ibm-mq-md-priority: asDestination
ibm-mq-md-replyTo
이 헤더는 작성된 메시지의 응답 대상을 설정합니다. 헤더 형식은 응답 대상 큐 및 선택적 큐 관리자 제공의 표준 표기법을 사용합니다. replyQueue[@replyQmgr]
예를 들면, 다음과 같습니다.

ibm-mq-md-replyTo: myReplyQueue@myReplyQMgr
[MQ 9.2.5 2022년 12월][REST API v3]ibm-mq-usr
요청 메시지 사용자 정의 특성을 설정하십시오. 메시지에서 여러 특성을 설정할 수 있습니다. 단일 ibm-mq-usr 요청 헤더에 쉼표로 구분된 여러 개의 특성을 지정하거나 ibm-mq-usr 요청 헤더에 대한 두 개 이상의 개별 인스턴스를 사용할 수 있습니다.
예를 들면, 다음과 같습니다.
ibm-mq-usr: myIProp;5;short
ibm-mq-usr: mySProp;”hi”;string
ibm-mq-usr: myBProp;true;boolean
ibm-mq-usr: myA;5;byte,myB;-10;integer
특성의 구문은 다음과 같습니다.

ibm-mq-usr: property_name; user_value; user_type
property_name
지정되는 사용자 특성의 이름입니다. 올바른 JMS 특성 이름이어야 합니다.
user_value
특성의 값입니다.
user_type
특성의 유형은 다음과 같습니다.
  • boolean(true/false, MQBOOL)
  • byte(8비트 정수, MQINT8)
  • short(16비트 정수, MQINT16)
  • integer(32비트 정수, MQINT32)
  • long(64비트 정수, MQINT64)
  • float(32비트 실수, MQFLOAT32)
  • double(64비트 실수, MQFLOAT64)
  • string(따옴표로 묶인 문자열)

요청 본문 형식

요청 본문은 텍스트여야 하며 UTF-8 인코딩을 사용합니다. 특정 텍스트가 필요하지 않습니다. 요청 본문 텍스트를 포함하는 MQSTR 형식화된 메시지가 작성되어 지정된 토픽에 발행됩니다.

[MQ 9.2.5 2022년 12월][REST API v3]REST API V3 사용자 정의 특성 또는 애플리케이션 특정 상관 ID 기능이 사용되는 경우 요청 본문 텍스트를 포함하는 JMS TextMessage 형식화된 메시지가 작성되어 지정된 큐에 넣습니다.

자세한 정보는 예제를 참조하십시오.

보안 요구사항

호출자를 mqweb 서버에 대해 인증해야 합니다. MQWebAdminMQWebAdminRO 역할은 messaging REST API에 적용할 수 없습니다. REST API의 보안에 대한 자세한 정보는 IBM MQ 콘솔 및 REST API 보안을 참조하십시오.

mqweb 서버에 인증되면 사용자는 messaging REST APIadministrative REST API모두를 사용할 수 있습니다.

지정된 토픽에 메시지를 넣기 위한 기능을 호출자의 보안 프린시펄에 부여해야 합니다.
  • 자원 URL의 {topicString} 부분에 지정된 토픽은 PUBLISH 사용 가능해야 합니다.
  • [MQ Appliance][AIX, Linux, Windows]자원 URL의 {topicString} 부분에 의해 지정된 주제의 경우, 호출자의 보안 프린시펄에 +PUB 권한을 부여해야 합니다.
  • [z/OS]자원 URL의 {topicString} 부분에 의해 지정되는 주제의 경우, 호출자의 보안 프린시펄에 UPDATE 액세스 권한을 부여해야 합니다.

[AIX, Linux, Windows] AIX®, Linux®, and Windows에서는 setmqaut 명령을 사용하여 보안 프린시펄에 IBM MQ 자원을 사용할 수 있는 권한을 부여할 수 있습니다. 자세한 정보는 setmqaut (권한 부여 또는 취소)를 참조하십시오.

[z/OS] z/OS®에서 z/OS에서 보안 설정을 참조하십시오.

messaging REST API와 함께 AMS (Advanced Message Security) 를 사용하는 경우 모든 메시지는 메시지를 게시하는 사용자의 컨텍스트가 아니라 mqweb 서버의 컨텍스트를 사용하여 암호화됩니다.

응답 상태 코드

201
메시지가 작성되고 공개되었습니다.
400
올바르지 않은 데이터가 제공되었습니다.
예를 들어, 올바르지 않은 요청 헤더 값이 지정되었습니다.
401
인증되지 않았습니다.
호출자는 mqweb 서버에 대해 인증되어야 하며 MQWebAdmin, MQWebAdminRO 또는 MQWebUser 역할 중 하나 이상의 구성원이어야 합니다. ibm-mq-rest-csrf-token 헤더도 지정해야 합니다. 자세한 정보는 보안 요구사항을 참조하십시오.
403
권한이 부여되지 않았습니다.
호출자가 mqweb 서버에 대해 인증되었거나 올바른 프린시펄과 연관되어 있습니다. 그러나 프린시펄에 필수 IBM MQ 자원의 전체 또는 서브세트에 대한 액세스 권한이 없거나 MQWebUser 역할에 없습니다. 필요한 액세스에 대한 자세한 정보는 보안 요구사항을 참조하십시오.
404
큐 관리자가 존재하지 않습니다.
405
토픽에서 PUBLISH가 금지됩니다.
415
메시지 헤더 또는 본문은 지원되지 않는 매체 유형입니다.
예를 들어, Content-Type 헤더가 지원되지 않는 매체 유형으로 설정되어 있습니다.
500
IBM MQ의 서버 문제 또는 오류 코드입니다.
502
메시징 제공자가 필수 함수를 지원하지 않으므로 현재 보안 프린시펄에서 메시지를 공개할 수 없습니다. 예를 들어 mqweb 서버 클래스 경로가 올바르지 않은 경우입니다.
503
큐 관리자가 실행 중이지 않습니다.

응답 헤더

다음 헤더가 응답과 함께 리턴됩니다.
Content-Language
오류 또는 예외의 경우 응답 메시지의 언어 ID를 지정합니다. 오류 또는 예외 조건에 필요한 언어를 나타내기 위해 Accept-Language 요청 헤더와 함께 사용됩니다. 요청된 언어가 지원되지 않는 경우 mqweb 서버 기본값이 사용됩니다.
Content-Length
컨텐츠가 없는 경우라도 HTTP 응답 본문의 길이를 지정합니다. 성공 시 값은 0(영)입니다.
Content-Type
응답의 본문을 지정합니다. 성공하면 값은 text/plain;charset=utf-8입니다. 오류 또는 예외가 발생할 경우 값은 application/json;charset=utf-8입니다.

응답 본문 형식

메시지가 공개되면 응답 본문은 비어 있습니다. 오류가 발생하면 응답 본문이 오류 메시지를 포함합니다. 자세한 정보는 REST API 오류 처리를 참조하십시오.

다음 예제는 비밀번호가 mquser인 사용자 mquser에 로그인합니다. cURL에서 로그인 요청은 다음 Windows 예제와 유사할 수 있습니다. LTPA 토큰은 -c 플래그를 사용하여 cookiejar.txt 파일에 저장됩니다.
curl -k "https://localhost:9443/ibmmq/rest/v1/login" -X POST 
-H "Content-Type: application/json" --data "{\"username\":\"mquser\",\"password\":\"mquser\"}" 
-c c:\cookiejar.txt

사용자가 로그인되면 LTPA 토큰 및 ibm-mq-rest-csrf-token HTTP 헤더가 추가 요청을 인증하는 데 사용됩니다. ibm-mq-rest-csrf-token token_value은(는) 공백을 포함하여 임의의 값이 될 수 있습니다.

  • 다음 Windows cURL 예제는 기본 옵션을 사용하여 큐 관리자 QM1의 토픽 문자열 myTopic에 메시지를 발행합니다. 메시지에는 "Hello World!" 텍스트가 들어 있습니다.
    curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/topic/myTopic/message" 
    -X POST -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token_value" 
    -H "Content-Type: text/plain;charset=utf-8" --data "Hello World!"
  • 다음 Windows cURL 예제는 큐 관리자 QM1의 토픽 문자열 myTopic/thisTopic에 지속 메시지를 발행하며, 만기는 2분입니다. 메시지에는 "Hello World!" 텍스트가 들어 있습니다.
    curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/topic/myTopic%2FthisTopic/message" 
    -X POST -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token_value" 
    -H "Content-Type: text/plain;charset=utf-8" -H "ibm-mq-md-persistence: persistent" 
    -H "ibm-mq-md-expiry: 120000" --data "Hello World!"