Démarrer et arrêter la file d’attente Service Broker

S’applique à :SQL ServerAzure SQL Managed Instance

Utilisez l’instruction ALTER QUEUE pour démarrer et arrêter 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 pas de nouveaux messages à la file d’attente et n’autorise pas les applications à recevoir des messages de la file d’attente.

Les administrateurs placent souvent les files d'attente en état d'indisponibilité Cet état empêche Service Broker de placer des messages dans la file d’attente jusqu’à ce que tous les objets d’un service soient 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’instruction suivante rend la file d’attente indisponible pour la réception :

ALTER QUEUE dbo.ExpenseQueue
    WITH STATUS = OFF;

Lorsqu’une file d’attente n’est pas disponible pour la réception, une application ne peut pas traiter les messages dans la file d’attente. Étant donné que Service Broker garantit qu’un message quitte uniquement la file d’attente dans le cadre d’une opération de réception, il n’existe aucun moyen de supprimer les messages d’une file d’attente arrêtée. Service Broker est conçu pour permettre la maintenance pendant que la file d’attente continue de recevoir des messages. Il est donc rarement nécessaire d’arrêter une file d’attente une fois la file d’attente disponible. Étant donné que la plupart des procédures stockées d’activation se terminent lorsqu’une RECEIVE opération échoue ou lorsqu’aucun autre message n’est disponible, une raison d’arrêter la file d’attente consiste à remplacer une procédure stockée d’activation pour un service qui reçoit des messages en permanence.

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.