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


Очереди

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

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

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

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

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

См. также