10장. 중복 메시지 감지


중복 메시지를 자동으로 감지하고 필터링하도록 브로커를 구성할 수 있습니다. 즉, 중복 탐지 논리를 구현할 필요가 없습니다.

중복 감지가 없으면 예기치 않은 연결 오류가 발생할 경우 클라이언트는 브로커로 전송된 메시지가 수신되었는지 여부를 확인할 수 없습니다. 이 경우 클라이언트는 브로커가 메시지를 수신하지 않았다고 가정하고 다시 보낼 수 있습니다. 이로 인해 중복 메시지가 생성됩니다.

예를 들어 클라이언트가 브로커에 메시지를 전송한다고 가정합니다. 브로커가 메시지를 수신하고 처리하기 전에 브로커 또는 연결이 실패하면 메시지는 해당 주소에 도달하지 못합니다. 실패로 인해 클라이언트에서 브로커로부터 응답을 받지 않습니다. 브로커가 메시지를 수신하고 처리한 브로커 또는 연결이 실패하면 메시지가 올바르게 라우팅되지만 클라이언트는 여전히 응답을 수신하지 못합니다.

또한 트랜잭션을 사용하여 성공을 결정하는 것이 이러한 경우에 반드시 도움이 되는 것은 아닙니다. 트랜잭션 커밋이 처리되는 동안 브로커 또는 연결이 실패하면 클라이언트에서 메시지를 성공적으로 전송했는지 여부를 확인할 수 없습니다.

이러한 상황에서 가정된 오류를 해결하기 위해 클라이언트는 최신 메시지를 다시 보냅니다. 결과적으로 시스템에 부정적인 영향을 미치는 메시지가 중복될 수 있습니다. 예를 들어 주문 처리 시스템에서 브로커를 사용하는 경우 중복 메시지가 구매 발주서가 두 번 처리됨을 의미할 수 있습니다.

다음 절차에서는 이러한 유형의 상황에서 보호하기 위해 중복 메시지 탐지를 구성하는 방법을 보여줍니다.

10.1. 중복 ID 캐시 구성

브로커가 중복된 메시지를 감지할 수 있도록 하려면 각 메시지를 전송할 때 생산자가 메시지 속성 _AMQ_DUPL_ID 에 대한 고유한 값을 제공해야 합니다. 브로커는 _AMQ_DUPL_ID 속성의 수신된 값 캐시를 유지 관리합니다. 브로커가 주소에서 새 메시지를 수신하면 해당 주소에 대한 캐시를 확인하여 이전에 이 속성에 동일한 값을 가진 메시지를 처리하지 않았는지 확인합니다.

각 주소에는 자체 캐시가 있습니다. 각 캐시는 원형이며 크기가 고정되어 있습니다. 즉, 새 항목이 캐시 공간 요구로 가장 오래된 항목을 대체합니다.

다음 절차에서는 브로커의 각 주소에서 사용하는 ID 캐시를 전역적으로 구성하는 방법을 보여줍니다.

프로세스

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. core 요소 내에서 id-cache-sizepersist-id-cache 속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.

    <configuration>
      <core>
        ...
        <id-cache-size>5000</id-cache-size>
        <persist-id-cache>false</persist-id-cache>
      </core>
    </configuration>
    id-cache-size

    캐시의 개별 항목 수로 지정된 ID 캐시의 최대 크기입니다. 기본값은 20,000 항목입니다. 이 예에서 캐시 크기는 5,000개의 항목으로 설정됩니다.

    참고

    최대 캐시 크기에 도달하면 브로커가 중복 메시지 처리를 시작할 수 있습니다. 예를 들어 캐시 크기를 3000 으로 설정했다고 가정합니다. 이전 메시지가 _AMQ_DUPL_ID 값이 동일한 새 메시지가 도착하기 전에 3000개 이상의 메시지가 도착하면 브로커는 중복을 감지할 수 없습니다. 이로 인해 브로커에서 두 메시지를 모두 처리합니다.

    persist-id-cache
    이 속성의 값을 true 로 설정하면 브로커가 수신 시 ID를 디스크에 유지합니다. 기본값은 true입니다. 위의 예제에서는 값을 false 로 설정하여 지속성을 비활성화합니다.

추가 리소스

  • AMQ Core Protocol JMS 클라이언트를 사용하여 중복 ID 메시지 속성을 설정하는 방법을 알아보려면 AMQ Core Protocol JMS 클라이언트 설명서에서 중복 메시지 탐지 사용을 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.