큐와 토픽은 JMS에서 지원하는 두 가지 메시징 모델입니다: 1. 포인트 투 포인트(PTP) 큐 메시징 모델: 이 메시징 모델을 통해 한 애플리케이션(즉, 메시지 생성자)이 다른 애플리케이션(즉, 메시지 소비자)에게 메시지를 보낼 수 있습니다. 이 전달 모델에서 메시지 목적지 유형은 큐(Queue)입니다(즉, 목적지 인터페이스 구현 클래스 인스턴스는 세션 인터페이스 구현 클래스 인스턴스가 createQueue 메서드를 호출하고 큐 이름을 전달하여 생성됩니다). 메시지는 먼저 메시지 서버 측의 특정 큐에 전달되고, 그 큐에서 이 큐를 듣는 소비자에게 전달됩니다. 동일한 큐는 여러 메시지 생성자와 메시지 소비자를 연결할 수 있지만, 한 메시지는 한 메시지 소비자에게만 전달될 수 있습니다. 대기열에 여러 메시지 소비자가 메시지를 듣고 있다면, JMS 메시지 서버는 '선착순' 원칙에 따라 다음 메시지 소비자가 어떤 메시지를 받을지 결정합니다. 메시지 소비자가 큐를 듣지 않으면, 메시지 컨슈머가 큐에 연결할 때까지 메시지는 큐에 남아 있습니다. 이 메시징 모델은 전통적인 의미에서 게으른 또는 폴링 모델입니다. 이 모델에서는 메시지가 자동으로 메시지 소비자에게 푸시되는 것이 아니라, 메시지 소비자가 큐에서 요청합니다. 2. 게시/구독(pub/subscribe) 주제 메시징 모델: 이 메시징 모델을 통해 애플리케이션은 여러 메시지 소비자에게 단일 메시지를 보낼 수 있습니다. 이 전달 모델에서 메시지 목적지 유형은 주제입니다(즉, 목적지 인터페이스 구현 클래스 인스턴스는 세션 인터페이스 구현 클래스 인스턴스가 createTopic 메서드를 호출하고 토픽 이름을 전달하여 생성됩니다). 메시지는 먼저 메시지 생성자가 메시지 서버의 특정 주제에 게시한 후, 해당 주제에 가입한 모든 소비자에게 메시지를 전달합니다. 주제 목표는 장기 구독도 지원합니다. 장기 구독은 소비자가 주제 목표에 등록되어 있지만, 메시지가 목적지에 도착했을 때 소비자가 비활성 상태일 수 있음을 의미합니다. 소비자가 다시 활성화되면 메시지가 전송됩니다. 만약 어떤 소비자도 해당 주제 목적지에 등록되어 있지 않으면, 해당 주제는 장기 구독에 가입한 비활성 소비자에게만 메시지를 남깁니다. PTP 메시징 모델과 달리, 퍼블/구독 메시징 모델은 여러 주제 구독자가 동일한 메시지를 받을 수 있도록 허용합니다. JMS는 모든 주제 구독자가 메시지를 받을 때까지 메시지를 보관합니다. 퍼블릭/구독 메시징 모델은 기본적으로 푸시 모델입니다. 이 모델에서는 메시지가 자동으로 방송되며, 메시지 소비자가 새로운 메시지를 받기 위해 주제를 적극적으로 요청하거나 폴링할 필요가 없습니다. 구체적인 차이점은 다음과 같습니다:
형
| 주제
| 대기 | 개요
| 게시 구독 메시지 게시 구독 메시지 게시
| 포인트 투 포인트 투 포인트
| 국가는 존재하지 않습니다
| 주제 데이터는 기본적으로 상태가 없습니다.
| 큐 데이터는 기본적으로 MQ 서버에 파일로 저장되며, 예를 들어 Active MQ는 보통 $AMQ_HOME\data\kr-store\data 아래에 저장됩니다. DB 저장소로도 구성할 수 있습니다.
| 무결성 보장
| 출판사가 발행하는 모든 데이터가 구독자에게 반드시 받아들여진다는 보장은 없습니다.
| 큐는 수신자가 모든 데이터를 받을 수 있음을 보장합니다.
| 메시지가 사라질 수 있을지
| 일반적으로 출판사가 주제에 메시지를 게시할 때, 해당 주제 주소를 듣는 서브레딧만 메시지를 받을 수 있습니다. 만약 듣고 있는 서브가 없으면 주제가 사라집니다.
| 송신자는 대상 큐에 메시지를 보내고, 수신자는 이 큐에서 비동기적으로 메시지를 받을 수 있습니다. 대기열에 있는 메시지는 당분간 수신자가 없어도 사라지지 않습니다.
| 메시지 릴리스 수신 정책
| 일대다 메시지 게시 및 수신 정책으로, 동일한 주제 주소를 여러 서브가 듣는 경우 게시자가 보내는 메시지를 받을 수 있습니다. 서브는 MQ 서버로 알림을 받습니다
| 일대일 메시지 발행 및 수신 정책으로, 송신자가 보낸 메시지는 한 수신자만 받을 수 있습니다. 수신자가 수신한 후, MQ 서버는 수신 사실을 알리고, MQ 서버는 큐 내 메시지에 대해 삭제하거나 다른 조치를 취합니다.
|
|