POST
HTTP POST 메소드를 /messaging/qmgr/{qmgrName}/topic/{topicString}/message
자원과 함께 사용하여 지정된 큐 관리자의 지정된 토픽에 메시지를 발행할 수 있습니다.
HTTP 요청 본문의 텍스트 기반을
지정된 큐 관리자 및 토픽에 넣습니다. 큐 관리자는 mqweb 서버와 같은 시스템에 있어야 하고 텍스트 기반 메시지만 지원됩니다. 메시지는 현재 사용자 컨텍스트를 사용하여 MQSTR 또는 JMS
TextMessage
형식화된 메시지로 발행되며, 기본 메시지 우선순위는 REST API V2의 경우 4, REST API V3의 경우 asDestination
입니다.
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
https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/topic/{topicString}/message
- qmgrName
- 메시징에 연결할 큐 관리자의 이름을 지정합니다. 큐 관리자는 mqweb 서버와 같은 시스템에 있어야 합니다.
- topicString
- 메시지를 넣을 토픽 문자열을 지정합니다.
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
- ibm-mq-rest-csrf-token
- 이 헤더가 설정되어야 하지만 값은 공백을 포함한 어떤 값도 될 수 있습니다.
- Accept-Language
- 이 헤더는 응답 메시지 본문에서 리턴되는 예외 또는 오류 메시지의 필수 언어를 지정합니다.
- ibm-mq-md-expiry
- 이 헤더는 작성된 메시지의 만기 지속 기간을 설정합니다. 메시지의 만기는 메시지가 큐 관리자에 도착하는 시간부터
시작됩니다. 결과 네트워크 지연이 무시됩니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
- 무제한
- 메시지가 만료되지 않습니다.
- 정수 값
- 메시지 만기까지 시간(밀리초).
- ibm-mq-md-persistence
- 이 헤더는 작성된 메시지의 지속성을 설정합니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
- nonPersistent
- 시스템 장애 또는 큐 관리자 재시작 시 메시지가 지속되지 않습니다.
- 지속적
- 메시지는 시스템 실패 또는 큐 관리자 재시작에서 지속됩니다.
- ibm-mq-md-priority
- 이 헤더는 작성된 메시지의 우선순위를 설정합니다. 헤더는 다음 값 중 하나로 지정해야 합니다.
- asDestination
- 메시지는 기본 IBM® MQ 큐 오브젝트의 DEFPRTY 속성에 지정된 우선순위를 사용합니다.
- 정수 값
- 0 - 9 범위의 정수로 실제 우선순위를 지정하십시오.
ibm-mq-md-priority: asDestination
- ibm-mq-md-replyTo
- 이 헤더는 작성된 메시지의 응답 대상을 설정합니다. 헤더 형식은 응답 대상 큐 및 선택적 큐 관리자 제공의 표준 표기법을 사용합니다.
replyQueue[@replyQmgr]
- ibm-mq-usr
- 요청 메시지 사용자 정의 특성을 설정하십시오. 메시지에서 여러 특성을 설정할 수 있습니다. 단일 ibm-mq-usr 요청 헤더에 쉼표로 구분된 여러 개의 특성을 지정하거나 ibm-mq-usr 요청 헤더에 대한 두 개 이상의 개별 인스턴스를 사용할 수 있습니다.
요청 본문 형식
요청 본문은 텍스트여야 하며 UTF-8 인코딩을 사용합니다. 특정 텍스트가 필요하지 않습니다. 요청 본문 텍스트를 포함하는 MQSTR
형식화된 메시지가 작성되어 지정된 토픽에 발행됩니다.
REST API V3 사용자 정의 특성 또는 애플리케이션 특정 상관 ID 기능이 사용되는 경우 요청 본문 텍스트를 포함하는 JMS TextMessage
형식화된 메시지가 작성되어 지정된 큐에 넣습니다.
자세한 정보는 예제를 참조하십시오.
보안 요구사항
호출자를 mqweb 서버에 대해 인증해야 합니다. MQWebAdmin
및 MQWebAdminRO
역할은 messaging REST API에 적용할 수 없습니다. REST API의 보안에 대한 자세한 정보는 IBM MQ 콘솔 및 REST API 보안을 참조하십시오.
mqweb 서버에 인증되면 사용자는 messaging REST API 및 administrative REST API모두를 사용할 수 있습니다.
- 자원 URL의 {topicString} 부분에 지정된 토픽은
PUBLISH
사용 가능해야 합니다. - 자원 URL의 {topicString} 부분에 의해 지정된 주제의 경우, 호출자의 보안 프린시펄에
+PUB
권한을 부여해야 합니다. - 자원 URL의 {topicString} 부분에 의해 지정되는 주제의 경우, 호출자의 보안 프린시펄에
UPDATE
액세스 권한을 부여해야 합니다.
AIX®, Linux®, and Windows에서는 setmqaut 명령을 사용하여 보안 프린시펄에 IBM MQ 자원을 사용할 수 있는 권한을 부여할 수 있습니다. 자세한 정보는 setmqaut (권한 부여 또는 취소)를 참조하십시오.
z/OS®에서 z/OS에서 보안 설정을 참조하십시오.
messaging REST API와 함께 AMS (Advanced Message Security) 를 사용하는 경우 모든 메시지는 메시지를 게시하는 사용자의 컨텍스트가 아니라 mqweb 서버의 컨텍스트를 사용하여 암호화됩니다.
응답 상태 코드
- 201
- 메시지가 작성되고 공개되었습니다.
- 400
- 올바르지 않은 데이터가 제공되었습니다.
- 401
- 인증되지 않았습니다.
- 403
- 권한이 부여되지 않았습니다.
- 404
- 큐 관리자가 존재하지 않습니다.
- 405
- 토픽에서 PUBLISH가 금지됩니다.
- 415
- 메시지 헤더 또는 본문은 지원되지 않는 매체 유형입니다.
- 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!"