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


Запуск и остановка очереди

Для запуска и остановки очереди используйте инструкцию ALTER QUEUE. После запуска очередь готова к отправке и получению сообщений. Когда очередь остановлена, компонент Service Broker не доставляет в эту очередь новые сообщения и не позволяет приложениям получать сообщения из этой очереди.

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

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;

Приведенная ниже инструкция делает очередь недоступной для приема сообщений:

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;

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

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

См. также

Справочник