Service Broker 개체 만들기

응용 프로그램에서는 데이터베이스에 정의된 Service Broker 개체에 대해 작동하는 Transact-SQL 문을 실행하여 Service Broker를 사용합니다. 이 섹션에서는 응용 프로그램의 Service Broker 개체를 만들 때 일반적으로 고려할 사항에 대해 설명합니다.

개요

Service Broker 개체는 다음과 같이 특정 태스크 집합의 메타데이터 및 저장소를 정의합니다.

  • 메시지 유형 - 대화에서 교환되는 데이터를 정의합니다.

  • 계약 - 태스크를 정의합니다. 각 계약은 특정 대화에서 사용할 수 있는 메시지 유형과 대화의 어느 쪽에서 메시지를 보낼 수 있는지를 지정합니다.

  • 큐 - 서비스에 대해 들어오는 메시지를 저장합니다.

  • 서비스 - 관련 비즈니스 태스크 집합을 나타냅니다. 서비스 이름은 서비스의 큐를 찾는 데도 사용됩니다.

계약은 하나 이상의 메시지 유형에 따라 달라지고, 서비스는 큐에 따라 달라지며 하나 이상의 계약에 따라서도 달라질 수 있습니다. 따라서 계약은 메시지 유형보다 나중에 만들고 메시지 유형보다 먼저 삭제합니다. 서비스는 큐 및 계약보다 나중에 만들고 큐 및 계약보다 먼저 삭제합니다.

서비스의 개체 만들기

서비스를 만드는 절차는 서비스가 시작 서비스이든, 대상 서비스이든, 둘 모두이든 관계없이 동일한 기본 단계를 따릅니다.

서비스의 정의에서는 해당 서비스를 대상으로 하는 계약을 지정합니다. 반면 응용 프로그램에서는 서비스를 사용하여 데이터베이스에 정의된 계약을 사용하는 대화를 시작할 수 있습니다. Service Broker에서는 이 방법을 사용하여 서비스가 응용 프로그램에서 처리할 수 있는 메시지만 받아야 한다는 일반적인 규칙을 적용합니다. 응용 프로그램에서 임의의 유형이나 알 수 없는 유형의 메시지를 받지 않도록 하기 위해 Service Broker에서는 새 대화가 서비스에 지정된 계약을 따르는 경우에만 대화를 허용합니다. 시작 서비스는 대화가 시작될 때 사용할 계약을 지정하므로 시작 서비스의 서비스 정의에는 계약을 포함할 필요가 없습니다.

서비스의 개체를 만들려면 다음을 수행합니다.

  1. 서비스에서 필요한 통신을 수행하는 데 사용할 메시지를 정의하는 메시지 유형을 만듭니다. 메시지 유형은 직접 정의할 수도 있고 해당 서비스가 통신할 대상 서비스의 생성자에서 유형을 만드는 스크립트를 가져올 수도 있습니다. 서비스에 필요한 메시지 유형이 데이터베이스에 이미 들어 있는 경우에는 이 단계를 건너뜁니다.

  2. 이 서비스가 참여할 수 있는 대화의 구조를 정의하는 하나 이상의 계약을 만듭니다. 이 계약은 직접 정의할 수도 있고 해당 서비스가 통신할 대상 서비스의 생성자에서 계약을 만드는 스크립트를 가져올 수도 있습니다. 서비스에 필요한 계약이 데이터베이스에 이미 들어 있는 경우에는 이 단계를 건너뜁니다.

  3. 큐를 만듭니다. Service Broker에서는 이 큐를 사용하여 서비스에 대해 들어오는 메시지를 받고 저장합니다. 큐를 만드는 방법은 자세한 내용은 CREATE QUEUE를 참조하십시오. 모든 서비스에는 큐가 있어야 합니다. 프로그래밍 및 관리 작업을 보다 간단하게 하기 위해 각 서비스에서는 일반적으로 해당 서비스 전용의 큐를 사용합니다. 서비스에 메시지 보존이 필요한 경우 큐에 메시지 보존 기능을 지정합니다.

  4. 서비스를 만듭니다. 서비스 정의에서는 서비스에서 사용하는 큐와 이 서비스를 대상으로 하는 계약을 지정합니다.

대부분의 경우 대상 서비스를 만든 다음 대상 서비스용으로 만든 계약 및 메시지 유형을 사용하여 시작 서비스를 만듭니다. 그러나 일부 경우에는 이미 정의된 시작 서비스에 대해 대상 서비스를 만들 수도 있습니다. 이러한 경우 대상 서비스에서는 시작 서비스에서 사용하는 메시지 유형 및 계약을 사용합니다. 예를 들어 이벤트 알림을 받을 대상 서비스를 만드는 경우 시작 서비스에서 사용하는 계약은 **https://schemas.microsoft.com/SQL/Notifications/PostEventNotification**이므로 이 계약을 사용합니다.

개체 정의 관리

응용 프로그램에서 사용하는 Service Broker 개체에 대한 Transact-SQL 스크립트를 만드는 것이 좋습니다. 이 Transact-SQL 스크립트를 사용하면 Service Broker 개체의 세부 사항을 쉽게 참조할 수 있습니다. 또한 이 스크립트를 사용하면 필요한 경우 서비스를 다른 시스템에 배포하거나 서비스를 다시 만들 수도 있습니다.

응용 프로그램에서 SQL Server 인스턴스 간에 메시지를 보내야 하는 경우에는 서비스에 대한 메시지 유형 및 계약을 정의하는 스크립트 하나와 큐 및 서비스를 정의하는 두 번째 스크립트를 만드는 것이 좋습니다. 첫 번째 스크립트는 시작 서비스와 대상 서비스 모두에 공통된 개체인 서비스용 인터페이스를 정의합니다. 두 번째 스크립트는 대화의 한 쪽에만 해당되는 개체인 서비스 이름 및 큐를 정의합니다.

섹션 내용