
같은 은행 거래 처리 앱을 amqplib와 @cloudamqp/amqp-client로 각각 실행할 수 있다. 이 데모는 메시지 재시도와 연결 복구 같은 상황을 시험하려는 사람에게 유용하다.
은행 앱과 LavinMQ 데모는 거래를 발행하는 생산자와 이를 처리하는 작업자로 구성된다. 메시지 재시도, 실패 메시지의 별도 큐 이동(데드 레터링), 수동 확인 응답, 중복 처리 방지, 연결 복구를 다룬다.
무엇을 비교하나?
AMQP(메시지 브로커와 앱이 메시지를 주고받는 통신 방식) 클라이언트 두 종류를 비교한다. 생산자, 작업자, 거래 처리 로직은 공유하고 브로커 구현만 달라진다. broker.js가 사용할 클라이언트를 선택하며, 각 클라이언트 구현은 amqplib/broker.js와 amqp-client/broker.js에 있다. setup.js는 데모에 필요한 큐와 교환기, 연결 규칙을 만들고 shared/에는 은행 로직 등 공유 코드가 들어 있다.
실행하려면 무엇이 필요한가?
먼저 의존성을 설치하고 예시 환경 파일을 복사한다.
npm install
cp .env.example .env
.env에 LavinMQ 연결 URL을 설정한다.
AMQP_URL=your_lavinmq_url
큐와 교환기, 연결 규칙을 만든다.
npm run setup
amqplib로 실행하려면 작업자를 시작한 뒤, 다른 터미널에서 거래를 발행한다.
npm run worker:amqplib
npm run producer:amqplib -- valid
@cloudamqp/amqp-client로 실행할 때는 다음 명령을 사용한다.
npm run worker:amqp-client
npm run produce:amqp-client -- valid
어떤 거래 상황을 시험할 수 있나?
생산자는 정상 거래, 일시적 실패, 잘못된 거래, 검토 대상 거래, 무작위 거래 시나리오를 지원한다.
npm run produce:amqp-client -- valid
npm run produce:amqp-client -- temporary-failure
npm run produce:amqp-client -- invalid
npm run produce:amqp-client -- review
npm run produce:amqp-client -- random
같은 시나리오를 amqplib로 실행하려면 명령의 amqp-client를 amqplib로 바꾸면 된다. 데모는 두 클라이언트에서 메시지 발행과 소비, 확인 응답, 연결 복구를 비교할 수 있도록 구성됐다. 제작자가 강조하는 점은 클라이언트를 바꿔도 앱 로직과 재시도·실패 메시지 처리 전략을 바꾸지 않아도 된다는 것이다.
두 클라이언트의 실제 처리 성능이나 비교 결과는 원문에 제시되지 않는다.
부록: 원문 예시
Application │ ▼ broker.js │ ┌───┴───────────┐ ▼ ▼ amqplib amqp-client.js broker broker │ │ └───────┬───────┘ ▼ LavinMQ
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요