책 소개
요약
RabbitMQ는 오픈소스 메시지 브로커로, 메시지 기반 애플리케이션을 개발하기 위한 다양한 기능을 제공한다. RabbitMQ의 기본 기능은 누구나 쉽게 사용할 수 있지만, 도입하려는 시스템에 적절하게 적용하려면 내부 동작과 프로토콜과 모델의 특징을 이해해야 한다. 이 책은 실제 운영 환경에서의 모니터링과 클러스터 관리뿐 아니라 AMQP 프로토콜과 저수준의 프레임 구조에 대해서도 자세히 알아본다. 개발자와 운영자가 RabbitMQ에 대해 깊이 이해할 수 있게 해주는 좋은 지침서가 될 것이다.
이 책에 쏟아진 찬사
"초보자와 전문가 모두가 엔터프라이즈 애플리케이션에 RabbitMQ를 성공적으로 적용할 수 있도록 돕는 훌륭한 지침서다."
– 이안 댈러스(Ian Dallas)/휴렛팩커드(HP, Hewlett-Packard)
"RabbitMQ에 대한 가장 포괄적인 책. 코드를 비롯한 모든 것이 여기에 있다!"
– 앤드루 메레디스(Andrew Meredith)/퀀텀 메트릭(Quantum Metric)
"RabbitMQ의 시작부터 마이그레이션 문제 해결까지 포함한 치트 시트다."
– 나디아 누리(Nadia Noori)/바르셀로나 라 살레 대학교(La Salle University Barcelona)
"실용적인 충고와 지혜로 가득 차 있는 책이다."
– 밀로스 밀리보게빅스(Miloš Milivojevic ́)/모차르트 벳(Mozzart Bet)
이 책에서 다루는 내용
■ AMQP
■ MQTT, STOMP, HTTP를 이용한 통신
■ 유용한 문제 해결 기법
■ 데이터베이스 연동
이 책의 대상 독자
메시징 지향 시스템에 대한 기본적인 이해를 갖춘 프로그래머에게 적합하다.
이 책의 구성
1장에서는 RabbitMQ의 기본 내용과 RabbitMQ의 다양한 기능을 소개하고, AMQ(Advanced Messaging Queuing) 모델을 다룬다.
2장에서는 AMQP, 프레임 구조와 RabbitMQ에 메시지를 발행하거나 검색할 때 발생하는 저수준 진행 과정을 알아본다.
3장에서는 메시지 속성에 대해 알아본다. 메시지의 유형이나 인코딩과 같은 중요한 메타 데이터를 메시지에 정의하는 헤더와 애플리케이션에서 헤더를 활용하는 방법을 다룬다.
4장에서는 메시지 발행 성능과 안정성의 절충 관계에 대해 알아본다. 각 수준의 전달 보장은 애플리케이션의 성능을 저하시킬 수 있는데, 이 성능에 영향을 주는 옵션에 대해 살펴본다. 또한 메시지 전달 보장과 빠른 메시지 발행 간의 균형을 유지하는 데 참고할 수 있는 내용을 다룬다.
5장에서는 메시지 소비에 대해 알아본다. Basic.Get과 Basic.Consume의 근본적인 차이점을 살펴보면서 Basic.Consume이 일반적으로 더 좋은 이유를 설명한다. 또 프리페치(prefetch), 서비스 품질 설정(QoS, Quality of Service), 메시지 확인, 데드 레터 익스체인지, 임시 큐, 메시지 만료를 다룬다.
6장에서는 RabbitMQ의 기본 익스체인지 유형 네 가지를 소개하고 각 유형이 애플리케이션 아키텍처에서 어떤 이점을 가지는지 자세히 알아본다.
7장에서는 클러스터 관리, 클러스터 환경에서 장애 상황에 대응하는 방법, 성능을 고려하면서 RabbitMQ를 확장하는 방법 등을 다룬다.
8장에서는 페더레이션 익스체인지와 페더레이션 큐를 이용한 클러스터링의 핵심 개념을 살펴본다. 그리고 RabbitMQ 클러스터를 아마존 웹 서비스(AWS)에 설치한 후, 정책을 적용하는 방법을 소개한다.
9장에서는 RabbitMQ에서 대체 프로토콜인 MQTT와 STOMP를 사용하는 방법을 소개하고 statelessd를 이용한 HTTP 메시지 발행에 대해 알아본다.
10장에서는 PostgreSQL 및 InfluxDB 데이터베이스와 연동하는 방법과 유용한 기능을 구현하는 방법을 살펴본다.
목차
목차
- 1부 RabbitMQ와 애플리케이션 아키텍처
- 1장.RabbitMQ 살펴보기
- 1.1 RabbitMQ의 기능과 장점
- 1.2 RabbitMQ를 사용하는 곳들
- 1.3 느슨하게 결합된 아키텍처의 장점
- 1.4 요약
- 2장. AMQP와 RabbitMQ 코드 작성하기
- 2.1 RPC 전송으로서의 AMQP
- 2.2 AMQP의 RPC 프레임 구조
- 2.3 프로토콜 사용하기
- 2.4 파이썬으로 메시지 발행자 작성하기
- 2.5 RabbitMQ에서 메시지 받기
- 2.6 요약
- 3장. 메시지 속성 심층 탐사
- 3.1 메시지 속성 적절히 사용하기
- 3.2 content-type으로 명시적 메시지 계약 작성하기
- 3.3 gzip, content-encoding으로 메시지 크기 줄이기
- 3.4 message-id와 correlation-id를 이용한 메시지 참조..
- 3.5 timestamp 속성
- 3.6 자동으로 메시지 만료하기
- 3.7 배달 모드를 이용해 안전성과 속도 조절하기
- 3.8 app-id 및 user-id를 사용해 메시지의 출처 확인하기
- 3.9 type 속성을 이용해 메시지 특정하기
- 3.10 동적인 작업 흐름을 위한 reply-to 속성 사용하기
- 3.11 headers를 사용해 사용자 속성 지정하기
- 3.12 priority 속성
- 3.13 사용할 수 없는 속성: cluster-id/reserved
- 3.14 요약
- 4장. 메시지 발행에서 성능 절충
- 4.1 발행 속도와 배달 보장의 균형 잡기
- 4.2 RabbitMQ 푸시백
- 4.3 요약
- 5장. 메시지를 받지 않고 소비하기
- 5.1 Basic.Get vs. Basic.Consume.
- 5.2 소비자 성능 조정
- 5.3 메시지 거부하기
- 5.4 큐 제어하기
- 5.5 요약
- 6장. 익스체인지 라우팅을 통한 메시지 패턴
- 6.1 다이렉트 익스체인지를 사용한 간단한 메시지 라우팅
- 6.2 팬아웃 익스체인지를 사용한 메시지 브로드캐스팅
- 6.3 토픽 익스체인지로 메시지를 선택적으로 라우팅하기
- 6.4 헤더 익스체인지를 통한 선택적 라우팅
- 6.5 익스체인지 성능 벤치마크하기
- 6.6 익스체인지 간에 라우팅하기
- 2부. 데이터센터 또는 클라우드에서 RabbitMQ 운영하기
- 7장. 클러스터를 이용한 RabbitMQ 확장
- 7.1 클러스터
- 7.2 클러스터 설정
- 7.3 요약
- 8장. 클러스터 간 메시지 발행
- 8.1 페더레이션 익스체인지와 페더레이션 큐
- 8.2 RabbitMQ 가상 머신 만들기
- 8.3 업스트림에 접속하기
- 8.4 요약
- 9장. 대체 프로토콜 사용
- 9.1 MQTT와 RabbitMQ
- 9.2 STOMP와 RabbitMQ
- 9.3 HTTP로 상태 없이 메시지 발행하기
- 9.4 요약
- 10장. 데이터베이스와 연결하기
- 10.1 PostgreSQL pg_amqp 확장 모듈
- 10.2 PostgreSQL 알림 수신하기
- 10.3 메시지를 InfluxDB에 저장하기..
- 10.4 요약
도서 오류 신고
정오표
정오표
[p.144 : 표 6행]
x-max-length : 큐에서 지정하는 메시지 만료 시간(밀리초 단위)
->
x-max-length : 큐의 최대 메시지 수
[p.144 : 표 7행]
x-message-ttl : 큐의 최대 메시지 수
->
x-message-ttl : 큐에서 지정하는 메시지 만료 시간(밀리초 단위)