목록기술, 나의 공부를 공유합니다./MQTT (11)
yoncho`s blog
자동으로 RabbitMQ 3개로 구성된 Cluster 구축하고 Queue Mirroring 정책을 설정하는 Docker-compose.yml 더보기 version: '3' services: rabbitmq1: container_name : rabbitmq1 image: rabbitmq:3-management hostname: rabbit1 ports: - "15672:15672" - "5672:5672" networks: - rabbitmq-network environment: RABBITMQ_ERLANG_COOKIE: 1234 RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_PASS: guest command: > bash -c " rabbitmq-server -det..
1. 옵션(max-length, max-lenght-byte, reject-publish(overflow), max-message-ttl) 2. 예제 3. 참조 1. 옵션 AssertQueue - MAX-LENGTH channel.assertQueue(queueName, { arguments : {'x-max-length': 100} }); Queue에 쌓을 수 있는 Messag 최대 수를 지정하는 옵션. Queue를 지정할 때 arguments로 ‘x-max-length’ 값에 원하는 길이를 지정하면 Queue에 최대 해당 길이만큼 데이터를 가지고 있을 수 있고 해당 길이를 초과한 경우 기본적으로 가장 오래된 Message부터 지우게된다. - MAX-LENGTH-BYTES channel.assertQu..
1. 시퀀스 다이어그램 2. RabbitMQ Cluster, Queue Mirroring 환경 구축 3. Connection (rabbitmq cluster port) 동적 할당 방법 1. RabbitMQ 시퀀스 정상 연결일 때 부터 Broker가 ShutDown 상태에서 Client 동작까지 흐름 2. RabbitMQ Cluster, Mirroring 자동 구축 1. docker-compose.yml 실행 시 3개의 RabbitMQ가 Cluster로 동작하며, Cluster 정책을 설정해 Queue가 Mirroring 됨. RabbitMQ Cluster - docker-compose.yml 더보기 version: '3' services: rabbitmq1: container_name : rabbitmq..
Clustering RabbitMQ Clustering은 다수의 RabbitMQ를 하나의 RabbitMQ로 묶어 사용한다. Cluster 안의 RabbitMQ들은 Queue를 제외한 모든 정보를 공유한다. (*Cluster 안의 모든 RabbitMQ는 동일한 Exchange를 가지고 있음) Cluster 안에서는 Queue는 하나만 존재할 수 있다. (*Queue의 Routing Key 혹은 Header 정보가 동일한 Queue가 Cluster 안에서 중복 생성될 수 없음) 이 때문에 Mirroring 기법이 등장했다. Cluster 안의 모든 RabbitMQ들은 Erlang Cookie라는 비밀키를 공유한다. (*해당 키가 있는지 확인해서 상대 RabbitMQ가 같은 Cluster 구성원인지 확인) C..
Consumer Application에서 Broker로 많은 Connection (TCP 연결)을 맺는 것은 좋지 않다. RabbitMQ에서는 Channel 이라는 개념을 통해 하나의 TCP 연결을 공유해서 사용할 수 있는 기능을 제공한다. 단, 멀티 스레드 혹은 멀티 프로세스 사용하는 작업은 각각 별도의 Channel을 열어 사용하는게 좋다. Connection 간략 설명 : Client (Pub/Sub)은 RabbitMQ(Host)와 단일 TCP 연결을 함. 이걸 Connection이라고 부름. - Feature Client(Pub/Sub)과 RabbitMQ가 연결될 때, 정확히는 RabbitMQ에서 지원하는 프로토콜은 모두 TCP 기반이다. 일반적인 Connection 특징 AMQP 0-9-1 Co..
1. 속성 속성 Name : Queue 이름 (단, amq. 는 예약어로 사용 불가능) Durability : Broker가 재시작되어도 남아있을지 여부 durable : Broker가 재시작되어도 디스크에 저장되어 남아있음. transient : Broker가 재시작되면 사라짐 Auto-delete : 마지막 Queue 연결이 해제되면 삭제 Argument : 메시지 TTL, Max Length, Master Locator 등 추가 기능 명시
1. 속성 2. Exchange Type (4가지) 속성 Name : Exchange 이름 Type : 메시지 전달 방식 - Direct - Fanout - Topic - Headers Durability : Broker가 재시작되어도 남아있을지 여부 - durable : Broker가 재시작되어도 디스크에 저장되어 남아있음. - transient : Broker가 재시작되면 사라짐 Auto-delete : 마지막 Queue 연결이 해제되면 삭제 Exchange Type Type Description Feature Direct Routing Key가 정확하게 일치하는 Queue에 전송 Unicast Topic Routing Key 패턴이 일치하는 Queue에 전송 Multicast Headers [Key..
RabbitMQ란 Erlang으로 구현된 오픈 소스 메시지 브로커 소프트웨어로 AMQP(Advanced Message Queueing Protocol) _ https://ko.wikipedia.org/wiki/AMQP 를 구현했으며 이후 MQTT, STOMP 등의 프로토콜 지원을 위해 확장 메시지를 생산하는 생산자(Producer)가 메시지를 큐에 저장해두면 소비자(Consumer)가 메시지를 가져가 처리하는 Pub/Sub 방식의 메시지 브로커이다. 지원하는 Protocol - AMQP 0-9-1 (with extendsions) - AMQP 1.0 - RabbitMQ Stream Protocl - MQTT 3.11 - STOMP 1.0 ~ 1.2 특징. - Message Durability Rabbit..