다음을 통해 공유


1단원: 기본 대화 개체 만들기

이 단원에서는 데이터베이스에서 대화를 지원할 수 있도록 하는 모든 개체를 만드는 방법을 배웁니다.

절차

Service Broker 활성화 및 AdventureWorks 데이터베이스로 전환

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 코드를 실행하여 AdventureWorks 데이터베이스에서 Service Broker를 활성화하고 컨텍스트를 이 데이터베이스로 전환합니다.

    USE master;
    GO
    ALTER DATABASE AdventureWorks
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks;
    GO
    

메시지 유형 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 코드를 실행하여 대화에 대한 메시지 유형을 만듭니다. Service Broker 개체는 여러 데이터베이스 엔진 인스턴스에서 참조되는 경우가 많으므로 Service Broker 개체의 이름은 대부분 URI 형식으로 지정됩니다. 이를 통해 여러 컴퓨터에서 Service Broker 개체의 고유성이 보장됩니다. 이러한 두 메시지 유형은 Service Broker에서 메시지가 올바른 형식의 XML 문서인지 여부만 확인하고 특정 스키마에 대해 XML의 유효성을 검사하지는 않도록 지정합니다.

    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

계약 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 코드를 실행하여 대화에 대한 계약을 만듭니다. 계약은 해당 계약을 사용하는 대화가 //AWDB/InternalAct/RequestMessage 유형의 메시지를 시작자에서 대상으로 보내고 //AWDB/InternalAct/ReplyMessage 유형의 메시지를 대상에서 시작자로 보내도록 지정합니다.

    CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
          ([//AWDB/InternalAct/RequestMessage]
           SENT BY INITIATOR,
           [//AWDB/InternalAct/ReplyMessage]
           SENT BY TARGET
          );
    GO
    

대상 큐 및 서비스 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 코드를 실행하여 대상에 사용되는 큐와 서비스를 만듭니다. 큐는 테이블이나 뷰와 유사한 방식으로 같은 데이터베이스에서 참조되므로 큐 이름의 형식은 테이블이나 뷰 이름과 유사합니다. CREATE SERVICE 문은 서비스를 TargetQueueIntAct에 연결합니다. 따라서 서비스로 전송되는 모든 메시지는 TargetQueueIntAct에 전달됩니다. 또한 CREATE SERVICE는 앞에서 만든 //AWDB/InternalAct/SampleContract를 사용하는 대화만 이 서비스를 대상 서비스로 사용할 수 있도록 지정합니다.

    CREATE QUEUE TargetQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/TargetService]
           ON QUEUE TargetQueueIntAct
              ([//AWDB/InternalAct/SampleContract]);
    GO
    

시작자 큐 및 서비스 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 코드를 실행하여 시작자에 사용되는 큐와 서비스를 만듭니다. 계약 이름이 지정되지 않았기 때문에 다른 서비스는 이 서비스를 대상 서비스로 사용할 수 없습니다.

    CREATE QUEUE InitiatorQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/InitiatorService]
           ON QUEUE InitiatorQueueIntAct;
    GO
    

다음 단계

//AWDB/InternalAct/InitiatorService//AWDB/InternalAct/TargetService 간의 대화를 지원하도록 AdventureWorks를 성공적으로 구성했습니다. 다음 단원에서는 대상 큐에서 내부 활성화를 지원하기 위한 저장 프로시저를 만듭니다. 2단원: 내부 활성화 프로시저 만들기를 참조하십시오.