Очереди

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

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

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

Приложения получают сообщения из очередей служб. Для каждого диалога очереди возвращают сообщения в том порядке, в котором они были посланы отправителем. Все сообщения, возвращаемые одной операцией получения сообщений, являются элементами диалогов, относящихся к одной группе сообщений. Очередь фактически содержит наборы связанных сообщений: по одному набору на каждую группу сообщений. Каждый раз, когда сообщение выполняет операцию получения сообщений из очереди, очередь возвращает один набор связанных сообщений. Приложение может получать сообщения конкретного диалога или конкретной группы сообщений. Очереди возвращают сообщения каждого диалога в том порядке, в котором они были отправлены, а не в строгом порядке «первым пришел — первым обслужен». Благодаря этому разработчики приложений могут не беспокоиться о восстановлении исходного порядка сообщений.

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