rabbitmq

· 개발
RabbitMQ와 같은 메시징 브로커를 사용하는 시스템은 기본적으로 분산되어 있습니다. 전송된 프로토콜 메서드(메시지)가 피어에 도달하거나 피어에서 성공적으로 처리된다는 보장이 없으므로 퍼블리셔와 컨슈머 모두 전달 및 처리 확인을 위한 메커니즘이 필요합니다. 이번 글에서는 RabbitMQ에서 제공하는 문서를 기반으로 컨슈머의 처리 확인에 대해 알아볼 예정입니다. (Consumer) Delivery Acknowledgements RabbitMQ가 컨슈머에게 메시지를 전달할 때, 언제 메시지를 성공적으로 전송한 것으로 간주해야 하는지 알아야 합니다. 어떤 종류의 로직이 최적인지는 시스템에 따라 다르고 주로 애플리케이션이 결정합니다. AMQP 0-9-1에서는 basic.consume 메서드를 사용하여 컨슈머를..
· 개발
RabbitListener를 구현하기 가장 간단한 방법은 @RabbitListener을 public 메서드에 선언 하는 것입니다. @RabbitListener(bindings = @QueueBinding( value = @Queue, exchange = @Exchange(value = "exchange"), key = "key" )) public void doSomething(Something something) {} 위의 방법은 간단히 RabbitListener을 구현 할 수 있다는 장점이 있지만 RabbitListener에 대한 설정과 메시지를 처리하는 코드가 한 곳에 모여있다는 점이 "어노테이션 말고 다른 방법으로 선언할 수 없을까?" 하는 생각으로 이어졌던 것 같습니다. 그래서 이번 글에서는 Ra..
· 개발
RabbitMQ에서 제공하는 AMQP 문서를 바탕으로 프로젝트를 진행하며 도움이 되었던 내용을 정리합니다.아래 내용은 문서 번역 | 추가 메모 로 구성되어 있습니다. What is AMQP 0-9-1?AMQP 0-9-1(고급 메시지 큐 프로토콜)은 호환되는 클라이언트 애플리케이션이 호환되는 메시징 미들웨어 브로커와 통신할 수 있도록 하는 메시징 프로토콜입니다. 메시징 브로커는 퍼블리셔(메시지를 게시하는 애플리케이션, 생산자라고도 함, publisher)로부터 메시지를 수신하여 컨슈머(메시지를 처리하는 애플리케이션, consumer)에게 라우팅 합니다.네트워크 프로토콜이기 때문에 퍼블리셔, 컨슈머, 브로커가 모두 다른 컴퓨터에 있을 수 있습니다. 위와 같이 퍼블리셔, 컨슈머, 브로커가 모두 다른 컴퓨터에서..
· 개발
최근 올라오는 컨퍼런스의 영상을 보다보면 이벤트, 메시지를 기반으로 아키텍처를 구성하는 경우를 많이 확인할 수 있습니다.이때 이벤트와 메시지의 차이에 대해 항상 모호함을 가지고 있었고 이를 RabbitMQ와 함께 알아보려 합니다. 이벤트와 메시지의 차이제가 파악한 이벤트와 메시지의 가장 큰 차이는 수신자 여부입니다.이벤트는 발행된 이벤트를 수신할 수 있는 수신자를 특정하지 않습니다.그렇기에 이벤트의 내용은 단지 무언가 일어났다는 것이고 발행자는 이벤트를 수신자가 누구인지, 자신의 이벤트를 받을 준비가 되어있는지 알지 못한 상태로 발행합니다.이때 이벤트는 일반적으로 topics, topic/fanout exchanges, stream, notification service를 활용한 발행 구독(publish..
belljun
'rabbitmq' 태그의 글 목록