IBM MQ와의 상호 운용: 주요 IBM MQ 개념
기본 IBM MQ 개념에 익숙하지 않을 경우 WebSphere® Application Server과의 상호 운용에 중요한 IBM MQ의 오브젝트를 읽어보십시오.
큐 및 토픽
큐는 메시지를 저장하는 데 사용되는 데이터 구조입니다. 애플리케이션에서 JMS 또는 IBM MQ API 호출을 사용하여 메시지를 IBM MQ 큐에 넣을 수 있습니다. 기타 애플리케이션은 큐에서 메시지를 가져올 수 있습니다.
토픽은 공개/등록 메시지에 공개되는 정보의 제목입니다. 애플리케이션이 특정 큐에 메시지를 넣는 대신 토픽에 메시지를 공개할 수 있습니다. 기타 애플리케이션은 해당 토픽에 공개된 모든 메시지를 수신하기 위해 토픽에 구독하여 메시지를 가져옵니다.
애플리케이션이 큐에 메시지를 넣으면 메시지 사본이 하나만 존재합니다. 둘 이상의 애플리케이션이 큐에서 메시지를 가져오더라도 하나의 이용자만 각 메시지를 수신할 수 있습니다. 하지만 애플리케이션이 메시지를 토픽에 공개하면 모든 등록자가 메시지 사본을 수신할 수 있습니다.
큐 관리자 및 큐 공유 그룹
큐 관리자가 각 IBM MQ 큐를 소유합니다. 큐 관리자는 소유하고 있는 큐를 유지관리해야 하며 수신하는 모든 메시지를 적절한 큐에 넣어야 합니다. 애플리케이션은 메시지를 큐에 넣을 때 큐 관리자에 연결합니다. 큐 관리자도 정상적인 조작으로서 큐에 메시지를 넣을 수 있습니다.
IBM MQ 버전 7부터는 IBM MQ의 각 토픽도 큐 관리자가 소유합니다. 큐 관리자는 공개자로부터 메시지를 수신하고 등록자로부터 등록을 수신합니다. 큐 관리자는 공개된 메시지를 메시지 토픽에 관심사항을 등록한 등록자에 라우팅합니다. 이전 버전의 IBM MQ에서는, 큐 관리자가 아닌 공개/등록 브로커가 공개/등록 메시징을 처리했습니다.
z/OS®용 IBM MQ에서는, Sysplex의 여러 큐 관리자가 액세스할 수 있는 공유 큐를 설정할 수 있습니다. 공유 큐에 넣은 메시지는 zSeries 연결 기능의 목록 구조로 저장되고, 대용량 메시지의 데이터는 공유 DB2® 테이블에 보유됩니다.
동일한 공유 큐 세트에 액세스할 수 있는 큐 관리자는 큐 공유 그룹이라고 하는 그룹을 형성합니다. 큐 공유 그룹의 각 멤버는 DB2 시스템에 연결하여 큐 및 채널을 비롯하여 IBM MQ 오브젝트의 공유 정의에 액세스합니다. 이 그룹의 모든 큐 관리자는 공유 큐에 있는 메시지를 검색할 수 있습니다. 따라서 공유 큐 중 하나에 액세스하는 애플리케이션은 큐 공유 그룹 내의 모든 큐 관리자에 연결할 수 있으므로 애플리케이션이 특정 큐 관리자의 가용성에 종속되지 않습니다.
로컬 큐, 원격 큐 및 클러스터
IBM MQ 네트워크에서 상호 통신은 한 큐 관리자 또는 (z/OS용 IBM MQ의 경우) 큐 공유 그룹에서 다른 큐 관리자로 메시지를 전송하여 이루어집니다.
IBM MQ 애플리케이션은 애플리케이션이 연결되는 큐 관리자의 큐인 로컬 큐에 메시지를 둘 수 있습니다. 큐 관리자에는 소유하는 각 큐에 대한 정의가 있으며 다른 큐 관리자가 소유하는 큐에 대한 정의도 있습니다. 애플리케이션이 연결되는 로컬 큐 관리자의 관점에서 보면, 이러한 기타 큐는 원격 큐이며 기타 큐를 소유하는 큐 관리자는 원격 큐 관리자입니다.
로컬 큐 관리자에 연결된 IBM MQ 애플리케이션은 로컬 큐에 메시지를 넣을 수 있으며 원격 큐에서 대상으로 지정된 메시지를 넣을 수 있습니다. IBM MQ는 원격 큐를 소유하는 원격 큐 관리자에 메시지를 전송해야 합니다. 메시지가 원격 큐 관리자의 IBM MQ 큐로 예정되는 경우, 로컬 큐 관리자는 메시지가 원격 큐 관리자로 전송할 준비가 될 때까지 전송 큐에 보유합니다. 전송 큐는 메시지가 전송되어 원격 큐 관리자에 저장될 때까지 저장되는 특별한 유형의 로컬 큐입니다.
IBM MQ 플랫폼에서 사용 가능한 통신 프로토콜 중 하나를 사용하면 IBM MQ 큐 관리자를 연결하여 클러스터를 형성할 수 있습니다. 클러스터에 큐 관리자를 그룹화할 때, 큐 관리자가 여전히 큐를 호스트합니다(따라서 공유 큐가 아님). 하지만 클러스터에 연결하면 큐 관리자가 클러스터의 기타 큐 관리자에 메시지를 전송할 수 있으며, 큐 관리자가 호스트하는 일부 또는 전체 큐를 클러스터의 모든 기타 큐 관리자에 클러스터 큐로 사용할 수 있습니다. 원격 큐 및 원격 큐 관리자에 대한 연결마다 각 큐 관리자에서 명시적 정의를 설정할 필요가 없습니다. 클러스터의 각 큐 관리자는 단일 클러스터 전송 큐를 사용하여 기타 모든 큐 관리자의 메시지를 보유하므로, 각 원격 큐 관리자에 전송 큐를 설정할 필요가 없습니다.
IBM MQ 버전 7부터는 공개/등록 메시지의 토픽을 소유하는 IBM MQ 큐 관리자를 함께 연결할 수도 있습니다. 토픽을 소유하는 큐 관리자를 모든 멤버 간의 링크를 사용하여 공개/등록 클러스터에 그룹화하거나, 연결된 큐 관리자 간의 상위 및 하위 관계를 사용하여 공개/등록 계층 구조에 그룹화할 수 있습니다. 클러스터 또는 계층 구조에 있는 모든 큐 관리자 간에 토픽 공개 및 등록을 공유할 수 있습니다.
메시지 채널
IBM MQ 메시지는 큐에 배치되거나 토픽에 공개될 때 메시지 채널을 통해 큐 관리자 간에 전송됩니다. 메시지 채널은 두 큐 관리자 사이의 단방향 통신 링크입니다. 원격 큐 관리자가 호스트하는 토픽 또는 큐 수나 대상 큐 관리자 수로 예정된 메시지를 보낼 수 있습니다.
- 송신자-수신자 채널
- 요청자-서버 채널
- 요청자-송신자 채널
- 서버-수신자 채널
- 클러스터-송신자 채널
- 클러스터-수신자 채널
예를 들어, 송신자-수신자 채널이라는 메시지 채널 유형을 정의하려면 전송 끝(로컬 큐 관리자일 수 있음)에서 송신자 채널을 정의합니다. 그런 다음 동일한 이름을 사용하여 수신자 끝(원격 큐 관리자일 수 있음)에서 수신자 채널을 정의하십시오. 메시지 채널은 단방향이므로 양방향으로 이동하는 메시지를 원하는 경우 큐 관리자 사이에서 반대 방향으로 이동하는 두 번째 채널을 정의해야 합니다.
클러스터의 큐 관리자의 경우, 각 큐 관리자 쌍 간에 메시지 채널을 정의할 필요가 없습니다. 그 대신, 두 개의 메시지 채널(메시지를 수신하기 위한 클러스터 수신자 채널 하나와 큐 관리자가 자신을 소개하고 클러스터에 대해 학습하는 클러스터 송신자 채널 하나)을 정의하여 각 큐 관리자를 클러스터에 연결합니다. 그러면 큐 관리자는 클러스터의 기타 모든 큐 관리자에게 메시지를 전송할 수 있습니다.
메시지 채널을 MQI 채널과 혼동하지 마십시오. MQI는 IBM MQ의 메시지 큐 인터페이스로서 애플리케이션이 큐 관리자와 상호작용하기 위해 사용합니다. MQI 채널은 IBM MQ 클라이언트 애플리케이션이 다른 시스템에서 실행되는 큐 관리자에 연결하고 큐 관리자에 MQI 호출을 실행하는 데 사용하는 연결 유형입니다.