12장. 중복 메시지 탐지


AMQ Broker에는 수신하는 중복된 메시지를 필터링하는 자동 중복 메시지 탐지가 포함되어 있으므로 중복 감지 논리를 코딩할 필요가 없습니다.

중복 탐지가 없으면 클라이언트는 대상 브로커 또는 해당 연결에 실패할 때마다 보낸 메시지가 성공했는지 여부를 확인할 수 없습니다. 예를 들어 브로커가 메시지를 수신하고 처리하기 전에 브로커 또는 연결이 실패하면 메시지가 주소에 도착하지 않으며 실패로 인해 브로커에서 응답을 받지 않습니다. 반면 브로커가 메시지를 수신한 브로커 또는 연결이 실패한 경우 메시지가 올바르게 라우팅되지만 클라이언트는 여전히 응답을 받지 못합니다.

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

클라이언트가 가정된 오류를 수정하기 위해 마지막 메시지를 다시 보내는 경우 결과는 주소로 전송되는 중복 메시지가 될 수 있으므로 시스템에 부정적인 영향을 미칠 수 있습니다. 중복 메시지를 보내면 구매 발주서가 두 번 충족될 수 있습니다. 다행히도 {AMQ Broker}은 이러한 종류의 문제가 발생하지 않도록 자동 중복 메시지 탐지를 제공합니다.

12.1. Duplicate ID 메시지 속성 사용

중복 메시지 검색을 활성화하려면 메시지 속성 _AMQ_DUPL_ID 에 대한 고유한 값을 제공합니다. 브로커가 메시지를 수신하면 _AMQ_DUPL_ID 에 값이 있는지 확인합니다. 이 경우 브로커는 메모리 캐시에서 해당 값을 사용하여 이미 메시지를 수신했는지 확인합니다. 동일한 값이 있는 메시지를 찾으면 들어오는 메시지가 무시됩니다.

절차

아래 예제에서는 코어 JMS 클라이언트를 사용하여 중복 탐지 속성을 설정하는 방법을 보여줍니다. 편의를 위해 클라이언트 는 중복 ID 속성 _AMQ_DUPL_ID 의 이름에 일정한 org.apache.activemq.api.core.Message.HDR_DUPLICATE_DETECTION _ID의 값을 사용합니다.

  • _AMQ_DUPL_ID 의 값을 고유한 문자열 으로 설정합니다.

    Message jmsMessage = session.createMessage();
    String myUniqueID = "This is my unique id";
    message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.