게시/가입 도메인에서는 메시지 제작자를 게시자라고 하고 메시지 소비자를 가입자라고 합니다. 게시자와 가입자는 주제라는 대상을 통해 메시지를 교환합니다. 즉, 게시자는 주제에 대한 메시지를 생성하고 가입자는 주제에 가입한 다음 해당 주제에서 메시지를 소비합니다.
그림 2–3에서는 게시/가입 도메인의 간단한 메시징 작업을 보여 줍니다. MyTopicPublisher는 Msg1을 대상인 MyTopic에 게시합니다. 그러면 MyTopicSubscriber1과 MyTopicSubscriber2가 각각 MyTopic에서 Msg1의 복사본을 받습니다.
게시/가입 모델에는 여러 명의 가입자가 필요하지 않지만, 그림에서는 이 도메인을 사용하여 메시지를 브로드캐스트할 수 있다는 사실을 강조하기 위해 두 명의 가입자를 표시했습니다. 주제에 대한 모든 가입자가 해당 주제에 게시된 메시지의 복사본을 갖습니다.
가입자는 비영구 가입자일 수도 있고 영구 가입자일 수도 있습니다. 브로커는 모든 활성 가입자에 대한 메시지를 보관하지만, 활성 가입자가 영구 가입자인 경우에는 비활성 가입자에 대한 메시지만 보관합니다.
그림 2–4에서는 이 패턴이 제공하는 가능성을 설명하기 위해 더 복잡한 게시/가입 메시징 그림을 보여 줍니다. 여러 명의 제작자가 Topic1 대상에 메시지를 게시합니다. 여러 명의 가입자가 Topic1 대상의 메시지를 소비합니다. 가입자가 선택기를 사용하여 메시지를 필터링하지 않는 한, 각 가입자는 선택한 주제에 게시된 모든 메시지를 얻게 됩니다. 그림 2–4에서 MyTSubscriber2는 Msg2를 필터링했습니다.
더욱 복잡한 이 그림은 게시/가입자 메시징에 대한 많은 추가 사항을 나타냅니다.
여러 제작자가 동일한 주제에 메시지를 게시할 수 있습니다. 제작자는 하나의 연결을 공유하거나 여러 연결을 사용할 수 있지만, 모두 동일한 주제에 액세스 가능합니다.
여러 가입자가 동일한 주제의 메시지를 소비할 수 있습니다. 선택기를 사용하여 메시지를 필터링하거나 사용하기 전에 메시지가 만료된 경우가 아니면, 가입자는 주제에 게시된 모든 메시지를 검색합니다.
가입자는 하나의 연결을 공유하거나 여러 연결을 사용할 수 있지만, 모두 동일한 주제에 액세스 가능합니다.
영구 가입자는 활성 가입자이거나 비활성 가입자일 수 있습니다. 브로커는 비활성 가입자에 대한 메시지를 보관합니다.
게시자와 가입자를 런타임에 동적으로 추가 및 삭제할 수 있으므로 필요에 따라 메시징 시스템을 확대하거나 축소할 수 있습니다.
메시지는 보낸 순서대로 주제에 게시되지만 소비되는 순서는 메시지 만료일, 메시지 우선 순위, 메시지를 소비하는 데 선택기가 사용되는지 여부 등과 같은 요소에 따라 다릅니다.
게시자와 가입자는 타이밍에 구애를 받습니다. 즉, 주제 가입자는 가입한 이후에 게시된 메시지만 소비할 수 있습니다.