Share via


Service Broker 메시지 유형 만들기

메시지 유형은 특정 메시지 종류의 이름과 Service Broker에서 해당 메시지 종류에 대해 수행하는 유효성 검사를 정의합니다. 응용 프로그램에서 사용할 메시지 유형을 결정하려면 먼저 응용 프로그램에서 수행해야 하는 태스크와 각 태스크를 수행하는 데 필요한 데이터를 계획해야 합니다.

응용 프로그램에 가장 일반적인 방법은 각 메시지에 태스크의 한 단계에 필요한 정보가 포함되도록 메시지를 구조화하는 것입니다. 각 메시지에 태스크의 한 단계에 필요한 정보가 들어 있으면 응용 프로그램에서 메시지를 받고 해당 단계를 완료하고 단일 트랜잭션 내에서 응답을 보내기가 쉽습니다. 따라서 많은 응용 프로그램에서 메시지 유형과 해당 메시지의 내용을 결정하는 가장 쉬운 방법은 응용 프로그램에서 수행하는 태스크의 트랜잭션 경계를 결정하는 것입니다. 각각의 개별 단계는 트랜잭션을 이루며 각 트랜잭션은 서비스 간에 교환되는 메시지 유형에 해당합니다. 상태 정보, 결과 또는 출력 또한 메시지 유형입니다.

Service Broker 통신 프로토콜은 이 메시지 스타일에 대해 작동하도록 설계되어 있습니다. 대화 프로토콜은 전송을 위해 큰 메시지를 조각화하고, 큰 메시지로 인해 작은 메시지가 전송되지 않는 경우가 없도록 합니다.

유효성 검사 유형 선택

메시지에 대해 지정되는 유효성 검사는 메시지의 내용에 따라 달라집니다. 일반적으로 테스트 중에는 사용 가능한 가장 제한적인 유효성 검사를 사용하고 응용 프로그램이 배포될 때는 성능을 향상시키기 위해 그보다 덜 제한적인 유효성 검사를 선택합니다. 예를 들어 형식화된 XML 문서는 유효성 검사를 NONE으로 지정하는 메시지의 본문으로 교환할 수 있습니다. 이 경우 응용 프로그램에서는 XML을 처리할 때 메시지의 유효성을 검사합니다.

메시지의 네트워크 형식에는 메시지 유형 이름이 포함됩니다. 따라서 메시지 유형에는 데이터 정렬 문제와 이름 충돌을 방지할 수 있는 이름을 선택하는 경우가 많습니다. 이름 지정에 대한 자세한 내용은 Service Broker 개체 이름 지정을 참조하십시오.

성공 및 실패 표시

응용 프로그램에서는 일반적으로 성공 또는 실패를 나타내기 위한 새 메시지 유형을 정의하지 않습니다. 대신 END CONVERSATION 문을 사용하여 대화가 완료되고 태스크가 성공했음을 나타냅니다. 태스크가 실패한 경우에는 WITH ERROR 옵션을 포함하여 대화에 대한 오류 메시지를 반환합니다.

일반적으로 태스크가 완료되면 대화의 참가자 중 한 참가자만이 대화를 종료해야 합니다. 다른 참가자는 종료 대화 또는 오류 메시지에 대한 응답으로만 END CONVERSATION을 실행합니다. 서비스에 대한 설명서에서는 일반적으로 대화가 성공적으로 완료될 경우 대화를 종료할 참가자를 지정합니다. 이 설명서를 제공하면 어느 참가자도 대화를 종료하지 않는 경우나 아직 태스크를 수행 중인 다른 참가자가 있는 상태에서 한 참가자가 대화를 종료할 경우 발생하는 문제를 방지할 수 있습니다. 내부 Service Broker 메시지는 양쪽 끝점에 전달되므로 양쪽 끝점 모두에서 오류 메시지를 처리할 수 있어야 합니다. 예를 들어 대화가 닫히기 전에 대화 수명이 만료되면 양쪽 끝점에서 Service Broker 오류 메시지를 받습니다.

어느 참가자든지 오류가 발생한 대화를 언제라도 종료할 수 있습니다. Service Broker 오류 메시지 처리에 대한 자세한 내용은 Service Broker 오류 메시지 처리를 참조하십시오.