11장. 메시지 그룹화


메시지 그룹은 다음과 같은 특징이 있는 메시지 집합입니다.

  • 메시지 그룹의 메시지는 동일한 그룹 ID, 즉 그룹 식별자 속성을 공유합니다. JMS 메시지의 경우 속성은 JMSXGroupID 입니다.
  • 메시지 그룹의 메시지는 큐에 많은 소비자가 있더라도 항상 동일한 소비자가 사용합니다. 다른 소비자는 원래 소비자가 종료되는 경우 메시지 그룹을 수신하도록 선택됩니다.

메시지 그룹은 속성의 특정 값에 대한 모든 메시지를 동일한 소비자가 직렬로 처리하려는 경우 유용합니다. 예를 들어 특정 스포일 구매에 대한 주문이 동일한 소비자에 의해 순차적으로 처리되도록 할 수 있습니다. 이렇게 하려면 소비자 풀을 만든 다음, 스톡 이름을 메시지 속성의 값으로 설정합니다. 이렇게 하면 특정 제품의 모든 메시지가 항상 동일한 소비자가 처리합니다.

참고

큐의 기본 FIFO 의미 체계로 인해 그룹화되지 않은 메시지의 동시 처리에 영향을 미칠 수 있습니다.Grouped messages might impact the concurrent processing of non-grouped messages due to the underlying FIFO semantics of a queue. 예를 들어 큐의 헤드에 그룹화된 메시지 수가 100개 뒤에 1,000개가 아닌 메시지가 있는 경우 그룹화되지 않은 메시지가 그룹화되지 않은 메시지를 사용하기 전에 모든 그룹화된 메시지가 적절한 클라이언트로 전송됩니다. 이 시나리오의 기능 영향은 모든 그룹화된 메시지가 처리되는 동안 동시 메시지 처리의 일시적인 중단입니다. 메시지 그룹의 크기를 결정할 때 이러한 잠재적인 성능 장애를 염두에 두십시오. 그룹화되지 않은 메시지에서 그룹화된 메시지를 분리할지 여부를 고려합니다.

11.1. 자동 메시지 그룹화

그룹 ID를 직접 제공하는 대신 ID가 자동으로 생성될 수 있습니다. 이러한 방식으로 그룹화된 메시지는 여전히 단일 소비자가 직렬로 처리합니다.

절차

아래 예제에서는 Core JMS 클라이언트를 사용하여 메시지 그룹화를 활성화하는 방법을 보여줍니다.

  • 그룹 ID 자동 생성을 활성화합니다.

    • JNDI 컨텍스트 환경을 사용하여 JMS 연결 팩토리를 인스턴스화하는 경우 연결 URL의 쿼리 문자열에 autogroup=true name-value 쌍을 추가합니다.

      java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
      connectionFactory.myConnectionFactory=tcp://localhost:61616?autoGroup=true
    • JNDI를 사용하지 않는 경우 ActiveMQConnectonFactory 에서 autogrouptrue 로 설정합니다.

      ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(...);
      cf.setAutoGroup(true);
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동