상태 관리
상태를 관리하는 응용 프로그램에서는 일반적으로 데이터베이스 테이블에 상태를 저장합니다. 각 대화 그룹에는 고유 식별자가 있으므로 일반적으로 해당 식별자가 상태 테이블의 키로 사용됩니다. Service Broker에서는 보내고 받은 메시지를 정확히 그대로 보존해야 하는 응용 프로그램을 위해 메시지 보존 기능도 제공합니다.
대부분의 응용 프로그램에는 상태가 필요하지 않습니다. 일반적으로 응용 프로그램에서는 태스크에 둘 이상의 메시지가 관련되어 있고 데이터베이스의 기존 테이블에 저장할 수 없는 태스크 관련 정보가 있는 경우에 상태를 관리합니다.
예를 들어 고객 정보를 조회하여 반환하는 응용 프로그램에서는 상태가 필요하지 않으므로 상태 테이블을 사용하지 않습니다. 반면, 주문 이행을 관리하는 응용 프로그램에서는 몇몇 다른 서비스에 대한 요청을 생성합니다. 다른 서비스에 대한 요청을 조정하는 프로그램에서는 상태 테이블을 사용하여 요청을 추적하는 경우가 많습니다. 모든 요청이 성공적으로 완료되면 응용 프로그램에서는 데이터 테이블을 업데이트하고 상태 테이블을 지웁니다. 요청에서 오류가 반환되면 응용 프로그램에서는 해당 요청을 다시 보내거나 상태 테이블을 사용하여 보완 요청을 보냅니다.
또한 응용 프로그램에서는 상태 테이블을 감사 또는 로깅용으로 사용하여 각 요청에 대한 중요한 정보를 상태 테이블에 저장할 수도 있습니다. 이 경우에는 대화가 완료되어도 응용 프로그램에서 상태 테이블의 정보를 삭제하지 않습니다.
일부 응용 프로그램에서는 대화가 활성 상태일 때 보내고 받은 메시지의 정확한 레코드가 필요할 수 있습니다. 이러한 경우를 위해 Service Broker에서는 메시지 보존 기능을 제공합니다.