목록Message Queue (3)
Log4KJS
MessageListener x-death, x-message-ttl, x-dead-letter-exchange, x-dead-letter-routing-key RabbitMQ 는 메세지가 reject (nack) 될 때마다 헤더의 x-death 를 증가시킵니다. 큐에 x-message-ttl, x-dead-letter-exchange,routing-key 를 설정하면, ttl 보다 많이 reject 된 메세지를 dead-letter-queue 로 보낼 수 있습니다. defaultRequeueRejected 처리중 예외가 발생한 경우 메세지를 requeue 할지 여부를 설정 할 수 있습니다. 또, 리스너에서 AmqpRejectAndDontRequeueException, ImmediateRequeueExc..

RabbitMQ 의 use case 에 이어 rabbitmq-client 의 구조에 대해 정리해보도록 하겠습니다. rabbitmq-client 는 우리가 RabbitMQ 를 이용해 애플리케이션을 작성할 때, 우리의 코드와 가장 직접적으로 연관되어 있으므로, 내부 구조를 이해하는 것이 잘못된 코드를 작성하는 것을 막는 데에 도움이 됩니다. 가장 먼저, RabbitMQ 에서 패킷의 기본 단위를 Frame 이라고 부르는데 (OSI 2 layer 의 그 프레임 아닙니다!), 그 구조는 다음과 같습니다. 주의깊게 보아야 할 점은 프레임의 헤더에 Channel id 가 존재한다는 점입니다. RabbitMQ 에서 모든 publish/consume 등에 쓰이는 메세지 교환은 Connection 단위가 아니라, Chan..
RabbitMQ 는 가장 널리 쓰이는 메세지 큐 소프트웨어 중 하나입니다. 여러 서비스 컴포넌트들 사이에서 메세지 교환, 주로 비동적 인 작업 위임을 위해 사용됩니다. 주요한 use case 는 다음과 같습니다. - 여러 컴포넌트들 사이의 결합도를 최소화하면서 메세지 교환이 필요할 때 RabbitMQ 는 amqp 라는 표준화된 프로토콜을 사용합니다. 즉, 프로토콜이 특정 언어나 프레임워크 등에 의존적이지 않습니다 = Publisher/Consumer 클라이언트에 사용되는 기술에 독립적입니다. 이는 메세지를 교환하는 컴포넌트들이 서로에게 갖는 결합도를 낮춰줍니다. - Time consuming 한 작업을 비동기적으로 호출해야 할 때 메세지 큐가 없다면, 작업을 처리할 컴포넌트에 다른 방식으로 직접 작업을 ..