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


Создание служб компонента Service Broker

В определение службы компонента Service Broker входят имена контрактов, в которых служба является целевой. Целевой службой называется адрес, который принимает запросы для задач, которые определяются контрактами, указанными в службе. Служба вызывающей стороны представляет обратный адрес для диалога с целевой службой.

Служба представляет бизнес-процесс в виде отдельного набора задач. Каждый контракт в рамках службы представляет отдельную задачу. В службе может указываться несколько контрактов, а любой из контрактов может использоваться несколькими службами.

Для хранения сообщений в каждой службе применяются очереди. Сообщения, отправляемые службе, доставляются в очередь. Обычно приложения проще всего реализовать, когда заданная очередь используется только одной службой. Однако в целях гибкости компонент Service Broker допускает задание одной очереди в нескольких службах. В этом случае приложение либо обрабатывает одинаковым образом все сообщения одного типа, либо проверяет тип сообщения и имя службы, чтобы определить способ обработки сообщения. Такая стратегия может оказаться подходящей, если приложение поддерживает несколько версий одной службы.

В сетевой формат сообщения входит имя службы. Поэтому имена служб часто выбираются так, чтобы избежать проблем с параметрами сортировки и конфликтов имен. Дополнительные сведения о задании имен см. в разделе Задание имен для объектов компонента Service Broker.

Чтобы создать службу, необходимо выполнить следующие действия.

  1. Создайте типы сообщений, которые определяют отправляемые и принимаемые данные.

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

  3. Создайте приложение, которое будет получать, обрабатывать и отправлять сообщения так, чтобы выполнить поставленную задачу.

  4. Создайте очередь для хранения входящих сообщений для службы. Очередь можно связать с хранимой процедурой активации, чтобы по мере прибытия сообщений компонент Service Broker автоматически активировал хранимую процедуру для их обработки.

  5. Создайте службу и свяжите ее с очередью, которая будет получать сообщения для службы. В этой службе доступны контракты, где определяются задачи, которые служба будет выполнять от имени других служб. В службе не нужно указывать контракты для задач, которые эта служба запрашивает в других службах.

Набор действий, необходимых для создания службы, может несколько отличаться в зависимости от фактических потребностей службы. Например, если создается служба для обработки уведомлений о событиях, тип сообщений и контракт уже определены SQL Server, и их не нужно создавать.