본문으로 건너뛰기

12.3 PTP패턴

PTP 메시징은 먼저 메시지를 큐에 보낸다. 메시지는 일반적으로 전송을 보장하기 위해 디스크에 저장된다. 다음 메시징 시스템이 메시지를 소비자에게 전달한다. 소비자는 메시지를 처리하고 처리가 완료되면 승인 메시지를 보낸다. 승인 메시지를 받으면 메시징 큐에서 메시지는 삭제되고 다시 배포할 수 없다. 메시징 서버가 소비자로부터 승인을 받기 전에 오류가 발생한 경우에는 복구하여 다시 메시지를 소비자에게 보낼 수 있다.

P2P 메시징에서 같은 큐를 바라보는 여러 소비자가 있을 수 있지만, 특정 메시지는 하나의 소비자에게서만 처리된다. 큐에 메시지를 보낸 제공자는 큐에서 메시지를 받는 소비자와 완전히 분리된다. 즉, 보낸 사람과 받는 사람이 서로의 존재를 인지할 필요가 없다.

기업의 도서 주문 시스템의 주문 큐가 P2P 메시징의 전형적인 예제이다. 각 주문은 주문 큐에 전송되는 메시지가 된다. 주문 큐로 메시지를 보내는 주문 시스템을 생각해보자. 메시지가 큐에 도착하면 일단 저장한다. 이렇게 하면 오류가 발생했을 때 주문 정보가 유실되지 않는다. 또한, 주문 큐에 많은 소비자가 있다고 생각하자. 각 소비자는 주문을 처리하는 인스턴스라고 생각할 수 있다. 메시징 시스템은 각 메시지를 하나의 주문 처리 컴포넌트로 전달한다. 다양한 메시지를 각종 주문 프로세서에서 처리 할 수 있지만 하나의 주문은 1개의 주문 프로세서에서만 처리된다. 이렇게 하면 주문이 두 번 처리되지 않는다.

주문처리 프로세서가 메시지를 받으면 도서 주문이 완료되고, 주문된 정보가 물류 시스템으로 전송되어 데이터베이스에 주문 정보가 업데이트된다. 주문 프로세서가 데이터베이스를 업데이트하면 주문이 처리되며 완료됐다는 메시지를 서버에게 알린다. 창고의 재고관리 시스템에 전송할 수도 있고, 데이터베이스의 업데이트는 단일 트랜잭션으로 완료한다.

그림 1. P2P 메시징 시스템