다음을 통해 공유


경로

Service Broker는 경로를 사용하여 메시지를 배달할 위치를 확인합니다. 서비스가 대화에 대한 메시지를 보내는 경우 SQL Server는 경로를 사용하여 메시지를 받을 서비스를 찾습니다. 해당 서비스가 응답하면 SQL Server는 다시 경로를 사용하여 시작 서비스를 찾습니다. 기본적으로 각 데이터베이스에는 명시적인 경로가 없는 서비스에 대한 메시지가 SQL Server 인스턴스 내에 배달되도록 지정하는 경로가 포함됩니다.

경로의 기본 구성 요소는 다음 3가지입니다.

  • 서비스 이름
    이 경로가 주소를 지정하는 서비스의 이름입니다. 이 이름은 BEGIN DIALOG 명령의 Service Name과 정확히 일치해야 합니다.

  • Broker 인스턴스 식별자
    메시지를 보낼 특정 데이터베이스에 대한 고유 식별자입니다. 이 경로가 가리키는 데이터베이스에 대한 sys.databases 테이블 행의 service_broker_guid 열입니다.

  • 네트워크 주소
    실제 컴퓨터 주소, 경로를 로컬 컴퓨터로 제한하는 키워드 또는 전송 계층이 서비스 이름에서 주소를 추론하는 것을 나타내는 키워드입니다. 네트워크 주소는 서비스를 호스팅하는 Broker의 주소가 될 수도 있고 전달 Broker의 주소가 될 수도 있습니다.

SQL Server는 대화에 대한 경로를 확인하기 위해 BEGIN DIALOG CONVERSATION 문에 지정된 Broker 인스턴스 식별자와 서비스 이름을 경로에 지정된 Broker 인스턴스 식별자와 서비스 이름과 일치시킵니다. 서비스 이름을 제공하지 않는 경로는 모든 서비스 이름과 일치합니다. Broker 인스턴스 식별자를 제공하지 않는 경로는 모든 Broker 인스턴스 식별자와 일치합니다. 대화와 일치하는 경로가 두 개 이상이면 SQL Server는 Service Broker 라우팅의 설명대로 경로를 선택합니다.

SQL Server는 대상이 첫 번째 메시지의 수신을 확인하면 해당 대화의 모든 후속 메시지가 동일한 데이터베이스로 라우팅되도록 합니다. 그러나 동일한 대화 그룹의 다른 대화는 동일한 데이터베이스로 라우팅되는 것을 보장하지 않습니다. 응용 프로그램이 관련 대화에 대한 모든 메시지를 동일한 데이터베이스로 라우팅해야 하는 경우 응용 프로그램은 대화를 시작할 때 Broker 인스턴스 식별자를 제공해야 합니다.

기본적으로 각 사용자 데이터베이스에는 AutoCreatedLocal 경로가 포함되어 있습니다. 이 경로는 임의의 서비스 이름 및 Broker 인스턴스와 일치하며 메시지가 현재 인스턴스 내에 배달되도록 지정합니다. 대화에 대한 대상과 시작자가 모두 같은 SQL Server 인스턴스에 있는 단순한 시나리오에서는 추가 경로가 필요하지 않습니다. 그러나 각 서비스에 대한 경로를 생성하면 AutoCreatedLocal 경로가 수정되거나 삭제되는 것을 막을 수 있습니다.