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


Создание очередей компонента Service Broker

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

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

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

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

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

Активация хранимой процедуры

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

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

Использование хранимых процедур активации служит распространенным способом разработки приложений компонента Service Broker. Однако другие подходы к разработке могут лучше отвечать требованиям определенного приложения. Любое приложение, которое может выполнять пакеты Transact-SQL в SQL Server, может отправлять и получать сообщения. Сообщения также могут обрабатываться любой хранимой процедурой, независимо от способа ее запуска. Процедура может активироваться SQL Server, запускаться агентом SQL Server или внешним приложением либо выполняться интерактивно из средства разработки, например из среды Среда SQL Server Management Studio или SQL Server Express Management Studio.