Démarrage et arrêt d'une file d'attente

Utilisez l'instruction ALTER QUEUE pour lancer ou suspendre une file d'attente. Une fois démarrée, la file d'attente est disponible pour l'envoi et la réception des messages. Lorsqu'une file d'attente est arrêtée, Service Broker ne remet plus aucun nouveau message à la file d'attente et n'autorise plus aucune application à recevoir des messages de cette file d'attente.

Les administrateurs placent souvent les files d'attente en état d'indisponibilité afin d'éviter que Service Broker n'y ajoute des messages tant que tous les objets d'un service ne sont pas créés. Dès que ce service est prêt à recevoir des messages, l'administrateur rend la file d'attente disponible à l'aide de l'instruction suivante :

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = ON ;

L'utilisation de l'instruction ci-dessous rend la file d'attente indisponible à la réception :

ALTER QUEUE dbo.ExpenseQueue WITH STATUS = OFF ;

Lorsque la réception de messages est interrompue pour une file d'attente, aucune application n'est alors en mesure de traiter les messages de cette file d'attente. Dans la mesure où Service Broker s'assure qu'un message ne quitte la file d'attente qu'au cours d'une opération de réception, la suppression de messages d'une file d'attente arrêtée est tout simplement impossible. Service Broker est conçu pour permettre la maintenance tandis que la file d'attente continue de recevoir des messages, il est donc rarement nécessaire de suspendre une file d'attente une fois qu'elle est déclarée disponible. Étant donné que la plupart des procédures stockées d'activation se ferment lorsqu'une opération RECEIVE échoue ou qu'aucun message n'est disponible, une file d'attente peut être suspendue pour remplacer une procédure stockée d'activation par un service qui reçoit des messages en continu.

Si un message arrive tandis que la file d'attente est arrêtée, Service Broker le conserve dans la file d'attente de transmission pour la base de données au lieu de le remettre à la file d'attente.

Voir aussi

Référence