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


Создание объектов компонента 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, поскольку этот контракт используется службой вызывающей стороны.

Управление определениями объектов

Рекомендуется создать сценарий Transact-SQL для объектов компонента Service Broker, которые используются в приложении. Этот сценарий Transact-SQL позволяет легко выполнить особые требования объектов компонента Service Broker. Сценарий также предоставляет возможность развертывания службы в другой системе или повторного создания службы в случае необходимости.

Если приложение занимается отправкой сообщений между экземплярами SQL Server, рекомендуется создать один сценарий, в котором определяются типы сообщений и контракты для службы, и второй сценарий, где определяются очередь и служба. Первый сценарий определяет интерфейс для службы — объекты, которые являются общими для вызывающей службы и целевой службы. Второй сценарий определяет имя службы и очередь — объекты, относящиеся к одной стороне диалога.

В этом разделе