Поделиться через


Занятие 1. Создание объектов диалога

На этом обсуждается создание объектов, позволяющих поддерживать диалог в базе данных.

Процедуры

Включение компонента Service Broker и переключение в базу данных AdventureWorks

  • Скопируйте и вставьте следующий код в окно редактора запросов. Затем выполните его, чтобы убедиться во включении компонента Service Broker в базе данных AdventureWorks и переключить в нее контекст.

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

Создание типов сообщений

  • Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать типы сообщений для диалога. Поскольку на объекты Service Broker часто ссылаются несколько экземпляров компонента Database Engine, большинству объектов компонента Service Broker присваиваются имена в формате URI. Это помогает обеспечить уникальность имен в пределах нескольких компьютеров. Оба типа сообщений указывают, что компонент Service Broker проверяет лишь то, что сообщения являются правильными XML-документами, но не проверяет их корректность по конкретной схеме.

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

Создание контракта

  • Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать контракт для диалога. Контракт указывает, что использующие его диалоги должны отправлять сообщения с типом //AWDB/1DBSample/RequestMessage от инициатора к цели, а сообщения с типом //AWDB/1DBSample/ReplyMessage — от цели к инициатору.

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

Создание очереди и службы целевой стороны

  • Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать очередь и службу, которые будут использоваться для целевой стороны. Поскольку ссылки на очереди из одной и той же базы данных напоминают ссылки на таблицы и представления, очереди имеют такие же имена, что и таблицы и представления. Инструкция CREATE SERVICE связывает службу с очередью TargetQueue1DB. Поэтому все сообщения, отправленные службе, будут помещены в очередь TargetQueue1DB. Инструкция CREATE SERVICE также указывает, что только диалоги, использующие созданный ранее контракт //AWDB/1DBSample/SampleContract, могут пользоваться этой службой в качестве целевой.

    CREATE QUEUE TargetQueue1DB;
    
    CREATE SERVICE
           [//AWDB/1DBSample/TargetService]
           ON QUEUE TargetQueue1DB
           ([//AWDB/1DBSample/SampleContract]);
    GO
    

Создание очереди и службы инициирующей стороны

  • Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать очередь и службу, которые будут использоваться для инициирующей стороны. Поскольку не указано имя контракта, никакие другие службы не могут использовать эту службу в качестве целевой.

    CREATE QUEUE InitiatorQueue1DB;
    
    CREATE SERVICE
           [//AWDB/1DBSample/InitiatorService]
           ON QUEUE InitiatorQueue1DB;
    GO
    

Следующие шаги

Настройка базы данных AdventureWorks для поддержки диалога между службами //AWDB/1DBSample/InitiatorService и //AWDB/1DBSample/TargetService завершена. Теперь завершим диалог с использованием данной конфигурации. См. раздел Занятие 2. Начало диалога и передача сообщений.