이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 8397|회답: 0

RabbitMQ의 세 가지 교환 모드(팬아웃, 다이렉트, 토픽) 소개

[링크 복사]
게시됨 2018. 3. 29. 오후 2:30:45 | | | |
소개:
RabbitMQ에서는 생산자가 제출한 모든 메시지가 Exchange에 의해 받아들여지고, Exchange는 특정 정책에 따라 저장을 위해 대기열로 전달합니다
RabbitMQ는 팬아웃, 다이렉트, 토픽, 헤더 네 가지 교환 유형을 제공합니다
헤더 모드는 실제로는 덜 사용되며, 이 글에서는 처음 세 가지 모드만 비교합니다.

1. 직접 교환


직접 교환으로 전송되는 모든 메시지는 RouteKey에 지정된 큐로 전달됩니다.

1. 일반적으로 rabbitMQ:"와 함께 제공되는 거래소를 사용할 수 있습니다(거래소 이름은 빈 문자열로 이하 기본 거래소라고 부릅니다).

2. 이 모드에서는 교환에 대해 어떤 결합 작업도 수행할 필요가 없습니다

3. 메시징을 위해 "RouteKey"가 필요하며, 이는 단순히 전송할 큐의 이름으로 이해할 수 있습니다.

4. RouteKey에 지정된 큐 이름이 vhost에 존재하지 않으면 메시지가 폐기됩니다.

2. 팬아웃 교환


팬아웃 교환기로 전송된 모든 메시지는 해당 교환기와 결합된 모든 큐로 전달됩니다.

1. 라우팅 테이블의 패턴으로 이해할 수 있습니다

2. 이 모드는 RouteKey가 필요하지 않습니다

3. 이 모드는 사전에 Exchange를 대기열에 바인딩해야 하며, 한 Exchange는 여러 큐를 바인딩할 수 있고, 한 큐는 여러 Exchange에 바인딩할 수 있습니다.

4. 메시지를 받은 교환이 어떤 큐에도 묶여 있지 않으면 메시지가 폐기됩니다.

3. 주제 교환


주제 교환에 전송된 모든 메시지는 RouteKey에 지정된 주제에 관심 있는 모든 큐로 전달됩니다

1. 이 패턴은 더 복잡한데, 간단히 말해 각 큐는 우려하는 주제를 가지고 있으며, 모든 메시지는 "제목"(RouteKey)을 가지며, Exchange는 해당 주제의 RouteKey와 일치할 수 있는 모든 큐에 메시지를 전달합니다.

2. 이 모드는 RouteKey가 필요하며, Exchange와 Queue를 미리 묶어둘 수 있습니다.

3. 바인딩할 때, 큐가 관심을 가지는 주제(예: "#.log.#")를 제공하여 큐가 로그와 관련된 모든 메시지를 처리함을 나타냅니다("MQ.log.error"인 RouteKey를 가진 메시지는 큐로 전달됩니다).

4. "#"는 0개 또는 여러 키워드를 의미하고, ""는 하나의 키워드를 의미합니다. 예를 들어, "로그". "log.warn"과 일치할 수는 있지만, "log.warn.timeout"과는 일치할 수 없습니다; 하지만 "log.#"는 위의 내용과 일치합니다.

5. 마찬가지로, Exchange가 RouteKey와 일치하는 큐를 찾지 못하면 이 메시지를 포기합니다.




이전의:XPosed를 사용해 Android SSL 인증서의 강력한 검증을 우회하세요
다음:.net/c# RabbitMQ 연결 끊김 - 연결 해제 및 재연결
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com