계약
계약은 응용 프로그램에서 특정 태스크를 수행하는 데 사용하는 메시지 유형을 정의합니다. 계약은 각 서비스가 특정 태스크를 수행하기 위해 보내는 메시지에 대한 두 서비스 간의 계약입니다. 계약 정의는 메시지 유형이 생성된 데이터베이스에서 유지됩니다.
대화에 참여한 각 데이터베이스에 동일한 계약을 만듭니다. 예를 들어 인적 자원 응용 프로그램에서 직원 ID를 확인하려면 확인을 요청한 서비스는 다른 서비스가 예상하는 메시지 유형을 알고 있어야 합니다. 또한 요청하는 서비스는 받을 메시지를 처리할 준비가 되어야 하므로 해당 메시지 유형을 알고 있어야 합니다.
계약은 원하는 작업을 수행하는 데 사용할 수 있는 메시지 유형을 지정합니다. 또한 각 메시지 유형을 사용할 수 있는 대화 참가자를 지정할 수 있습니다. 일부 메시지 유형은 각 참가자가 보낼 수 있고 다른 메시지 유형은 시작자 또는 대상만 보내도록 제한됩니다. 계약에는 시작자가 보낸 메시지 유형이나 각 참가자가 보낸 메시지 유형을 포함해야 합니다. 그렇지 않으면 시작자가 계약을 사용하는 대화를 시작할 방법이 없습니다.
Service Broker에는 DEFAULT라는 기본 제공 계약도 포함되어 있습니다. DEFAULT 계약에는 SENT BY ANY 메시지 유형만 포함됩니다. BEGIN DIALOG 문에 계약이 지정되지 않은 경우 Service Broker는 DEFAULT 계약을 사용합니다.
예를 들어 계약에는 SubmitRequest, ProcessRequest 및 RequestStatus 메시지 유형이 있을 수 있습니다. 시작 끝점만 SubmitRequest를 사용할 수 있고 대상 끝점만 ProcessRequest를 보낼 수 있습니다. 각 대화 참가자가 RequestStatus 메시지 유형을 보낼 수 있습니다. RequestStatus 메시지 유형을 사용하여 참가자는 대상이 처리 중인 위치를 확인하거나 이 요청과 관련된 병렬 처리 상태의 시작자를 확인할 수 있습니다.