Broker 메시지
응용 프로그램 간의 통신은 메시지 유형 개체로 정의된 응용 프로그램별 메시지를 통해 대부분 처리됩니다. 또한 Service Broker는 응용 프로그램별 데이터보다는 Service Broker의 정보가 포함된 3가지 유형의 메시지를 제공합니다. 모든 응용 프로그램에 오류 메시지와 종료 대화 메시지를 처리하기 위한 논리가 포함되어야 합니다. 응용 프로그램이 대화에 대화 타이머를 설정하는 경우 응용 프로그램에는 대화 타이머 메시지를 처리하기 위한 논리가 포함되어야 합니다. Service Broker는 이러한 메시지 유형이 서비스에 대한 계약에 표시되는지 여부에 관계없이 해당 메시지 유형을 모든 서비스에 제공합니다.
대화 타이머 메시지
대화 타이머 메시지는 대화에서 대화 타이머가 만료되었음을 나타냅니다. 이러한 메시지의 메시지 유형은 **https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer**입니다. 대화 타이머는 대화의 한 쪽에만 해당이 되므로 Service Broker가 대화의 다른 쪽으로는 대화 타이머 메시지를 보내지 않습니다.
대화 타이머 메시지는 빈 메시지입니다. 수신 작업은 제한 시간 메시지가 큐에 도착하는 순서에 관계없이 해당 대화에 대해 다른 어떤 메시지보다도 먼저 대화 타이머 메시지를 받습니다.
오류 메시지
원격 서비스에서 오류와 함께 대화가 종료되거나 로컬 Broker가 대화에서 복구할 수 없는 오류를 검색하면 로컬 Broker가 오류 메시지를 생성합니다. 오류 메시지의 메시지 유형은 **https://schemas.microsoft.com/SQL/ServiceBroker/Error**입니다. 오류 메시지는 올바른 형식의 XML로 유효성이 검사됩니다.
오류 메시지에 포함된 XML 문서에는 https://schemas.microsoft.com/SQL/ServiceBroker 네임스페이스가 사용됩니다. 문서의 루트 요소에는 로컬 이름 Error가 지정되고 Code라는 요소와 Message라는 요소가 포함됩니다. Code 요소에는 정수 값이 저장됩니다. Message 요소에는 사람이 읽을 수 있는 텍스트 메시지가 저장됩니다.
예를 들어 경비 보고서를 처리하는 서비스에서 생성된 오류 메시지에는 읽기 쉽도록 서식이 다시 설정된 다음 XML이 포함될 수 있습니다.
<?xml version="1.0"?>
<Error xmlns="https://schemas.microsoft.com/SQL/ServiceBroker">
<Code>12</Code>
<Description>
Unknown cost center "127-1000". Please check the cost center list
and resubmit the report.
</Description>
</Error>
수신 작업은 오류 메시지가 큐에 도착하는 순서에 관계없이 해당 대화에 대해 대화 타이머 메시지가 아닌 다른 어떤 메시지보다도 먼저 오류 메시지를 받습니다. 큐에 대화 타이머 메시지와 오류 메시지가 모두 있을 경우 수신 작업은 오류 메시지보다 먼저 대화 타이머 메시지를 받습니다.
대화에 대해 오류 메시지가 도착하면 응용 프로그램이 해당 대화에 대해 메시지를 보내려고 시도하는 경우 Broker에서 오류가 발생합니다. 그러나 응용 프로그램은 오류 메시지를 받은 후에도 해당 대화에 대해 나머지 메시지를 모두 받을 수 있습니다.
종료 대화 메시지
응용 프로그램이 대화를 종료할 때 오류가 지정되지 않으면 로컬 Broker가 종료 대화 메시지를 원격 Broker로 보냅니다. 종료 대화 메시지의 메시지 유형은 **https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog**입니다.
종료 대화 메시지는 빈 메시지입니다. 수신 작업은 메시지가 큐에 도착하는 순서대로 종료 대화 메시지를 받습니다.
참고 항목
작업
방법: Service Broker 오류 메시지에서 정보 검색(Transact SQL)