4.13. 미전송되지 않은 메시지를 배달 못 한 편지 주소로 이동


클라이언트에 메시지 전달이 실패하면 브로커가 메시지를 지속적으로 전달하려고 시도하지 않을 수 있습니다. 무한한 전달 시도를 방지하기 위해, dead letter 주소와 하나 이상의 상승된 dead letter 큐 를 정의할 수 있습니다. 지정된 수의 전송 시도 후 브로커는 원래 큐에서 전달되지 않은 메시지를 제거하고 구성된 dead letter 주소로 메시지를 보냅니다. 나중에 시스템 관리자는 배달 못 한 편지 대기열에서 전달되지 않은 메시지를 사용하여 메시지를 검사할 수 있습니다.

지정된 큐에 대해 배달 못 한 주소를 구성하지 않으면 브로커는 지정된 전달 시도 횟수 후에 큐에서 전달되지 않은 메시지를 영구적으로 제거합니다.

배달되지 않은 메시지는 dead letter 큐에서 소비되는 다음과 같은 속성을 갖습니다.

_AMQ_ORIG_ADDRESS
메시지의 원래 주소를 지정하는 string 속성
_AMQ_ORIG_QUEUE
메시지의 원래 큐를 지정하는 string 속성

4.13.1. 배달 못 한 문자 주소 구성

다음 절차에서는 dead letter 주소 및 관련 dead letter 큐를 구성하는 방법을 보여줍니다.

절차

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. 큐 이름과 일치하는 < address-setting > 요소에서 dead letter address name 및 최대 전달 시도 수를 설정합니다. 예를 들면 다음과 같습니다.

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
    match
    브로커가 이 address-setting 섹션의 구성을 적용하는 주소입니다. < address-setting > 요소의 match 속성에 와일드카드 표현식을 지정할 수 있습니다. 와일드카드 표현식을 사용하면 < address-setting > 요소에서 구성된 dead letter 설정을 일치하는 주소 세트 와 연결하려는 경우 유용합니다.
    dead-letter-address
    dead letter 주소의 이름입니다. 이 예제에서 브로커는 큐 예제Queue 에서 전달되지 않은 메시지를 dead letter 주소 DLA 로 이동합니다.
    max-delivery-attempts
    브로커가 구성된 배달되지 않은 메시지를 구성된 dead letter 주소로 이동하기 전에 최대 전달 시도 횟수입니다. 이 예에서 브로커는 실패한 전달 시도에 세 번 실패한 후 배달되지 않은 메시지를 배달 못 한 편지 주소로 이동합니다. 기본값은 10 입니다. 브로커가 무제한의 재전송 시도 횟수를 만들려면 값 -1 을 지정합니다.
  3. addresses 섹션에서 dead letter 주소에 대한 address 요소 DLA 를 추가합니다. 배달 못 한 큐를 배달 못 한 편지 주소와 연결하려면 의 이름 값을 지정합니다. 예를 들면 다음과 같습니다.

    <configuration ...>
       <core ...>
          ...
          <addresses>
             <address name="DLA">
                <anycast>
                   <queue name="DLQ" />
                </anycast>
             </address>
          ...
          </addresses>
       </core>
    </configuration>

앞의 구성에서 DLQ 라는 dead letter 큐를 dead letter address DLA 와 연결합니다.

추가 리소스

4.13.2. 배달 못 한 문자 대기열 자동 생성

일반적인 사용 사례는 원래 주소에 따라 전달되지 않은 메시지를 분류하는 것입니다. 예를 들어, 스톡 이라는 주소에서 DLQ.products라고 하는 dead letter 큐가 있는 DLA. 줄임말 큐로 전달되지 않은 메시지를 라우팅하도록 선택할 수 있습니다. 마찬가지로 orders라는 주소에서 전달되지 않은 메시지를 DLA. orders 라는 dead letter 주소로 라우팅할 수 있습니다.

이러한 유형의 라우팅 패턴을 사용하면 전달되지 않은 메시지를 쉽게 추적, 검사 및 관리할 수 있습니다. 그러나 이와 같은 패턴은 자동으로 생성된 주소 및 큐를 주로 사용하는 환경에서 구현하기 어렵습니다. 이러한 유형의 환경에 대한 시스템 관리자는 전달되지 않은 메시지를 유지하기 위해 주소 및 대기열을 수동으로 생성하는 데 필요한 추가 노력을 원하지 않을 수 있습니다.

해결 방법으로 다음 절차에 표시된 것처럼 주소 및 큐를 자동으로 생성하여 전달되지 않은 메시지를 처리하도록 브로커를 구성할 수 있습니다.

사전 요구 사항

절차

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. 일치하는 큐 또는 큐 집합에 대한 dead letter 주소를 정의하기 위해 이전에 추가한 <address-setting > 요소를 찾습니다. 예를 들면 다음과 같습니다.

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
  3. < address-setting > 요소에서 브로커가 종료된 문자 리소스(즉, 주소 및 대기열) 및 이러한 리소스의 이름을 지정하는 방법을 자동으로 생성하도록 지시하는 구성 항목을 추가합니다. 예를 들면 다음과 같습니다.

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
                <auto-create-dead-letter-resources>true</auto-create-dead-letter-resources>
                <dead-letter-queue-prefix>DLQ.</dead-letter-queue-prefix>
                <dead-letter-queue-suffix></dead-letter-queue-suffix>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
    auto-create-dead-letter-resources

    브로커가 배달되지 않은 메시지를 수신하기 위해 배달 못 한 주소와 큐를 자동으로 생성하는지 여부를 지정합니다. 기본값은 false입니다.

    auto-create-dead-letter-resourcestrue 로 설정된 경우 브로커는 배달 못 한 주소와 연관된 dead letter 큐를 정의하는 <address> 요소를 자동으로 생성합니다. 자동 생성 된 < address > 요소의 이름은 < dead-letter-address>에 대해 지정한 name 값과 일치합니다.

    브로커가 자동으로 생성된 < address > 요소에 정의하는 dead letter 큐는 멀티캐스트 라우팅 유형이 있습니다. 기본적으로 브로커는 배달되지 않은 메시지의 원래 주소와 일치하도록 dead letter 큐의 이름을 지정합니다(예: 스포지 ).

    브로커는 _AMQ_ORIG_ADDRESS 속성을 사용하는 dead letter 큐에 대한 필터도 정의합니다. 이 필터는 배달 못 한 큐가 해당 원래 주소로 전송된 메시지만 수신하도록 합니다.

    dead-letter-queue-prefix

    브로커가 자동으로 생성된 dead letter 큐의 이름에 적용되는 접두사입니다. 기본값은 DLQ입니다.

    접두사 값을 정의하거나 기본값을 유지하는 경우 dead letter 큐의 이름은 접두사와 원래 주소(예: DLQ.>-<s )의 연결입니다.

    dead-letter-queue-suffix
    브로커가 자동 생성된 dead letter 큐에 적용되는 접미사입니다. 기본값은 정의되지 않습니다(즉 브로커는 접미사를 적용하지 않음).
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.