Partager via


Interfaces pour un adaptateur d'envoi asynchrone

Les adaptateurs qui envoient les messages un par un peuvent les envoyer de manière synchrone ou asynchrone. Un adaptateur envoie les messages de manière asynchrone s'il ne bloque pas le thread du proxy de transport mais qu'il utilise à la place un thread distinct pour les opérations d'envoi. Pour pouvoir envoyer les messages de manière asynchrone, l'adaptateur doit implémenter les interfaces suivantes :

  • IBTTransport

  • IBaseComponent

  • IBTTransportControl

  • IPersistPropertyBag

  • IBTTransmitter

    Les étapes suivantes décrivent la séquence d'actions effectuée par un adaptateur d'envoi afin de transmettre les messages à partir du serveur à la demande du moteur de messagerie.

  1. Le moteur de messagerie utilise le proxy de transport pour passer un message sortant à un adaptateur d’envoi en appelant la méthode TransmitMessage de l’interface IBTTransmitter .

  2. L’adaptateur retourne immédiatement à partir de TransmitMessage après avoir stocké le message à envoyer à une file d’attente interne et retourne False pour bDeleteMessage. Ceci indique au moteur de messagerie que le message sera transmis de manière asynchrone.

  3. L'adaptateur envoie le message en utilisant sa propre réserve de threads.

  4. Une fois l'opération d'envoi terminée, l'adaptateur supprime le message d'origine de la base de données MessageBox. Il obtient un lot à partir du moteur de messagerie à l’aide de la méthode IBTTransportBatch.GetBatch du proxy de transport, puis appelle DeleteMessage.

    Le schéma ci-dessous indique les interactions d'objets impliquées dans la création d'un adaptateur d'envoi asynchrone.

    Image montrant les interactions d’objet impliquées dans la création d’un adaptateur d’envoi asynchrone.
    Workflow pour l'envoi d'un message de manière asynchrone

Notes

Nous recommandons que l'adaptateur conserve le décompte du nombre de messages en cours de traitement. L’adaptateur doit bloquer la méthode Terminate jusqu’à ce que le nombre de messages ait atteint zéro. Pour les adaptateurs d’envoi, les messages en cours de traitement doivent être gérés de manière appropriée. Cela signifie que tout message correctement remis de manière asynchrone doit être supprimé de la file d'attente de messages de l'application privée de l'adaptateur afin d'éviter que les messages ne soient envoyés deux fois. En général, une fois l’option Terminate appelée par le moteur de messagerie, elle n’accepte pas les demandes de publication de nouveaux messages à partir de l’adaptateur. La seule exception à cette règle concerne les messages de réponse liés aux paires sollicitation-réponse.

Voir aussi

Variables d’adaptateur
Développement d’un adaptateur d’envoi
Instanciation et initialisation d’un adaptateur d’envoi
Interfaces pour un adaptateur d’envoi synchrone
Interfaces pour un adaptateur d’envoi pris en charge par lot synchrone
Interfaces pour un adaptateur d’envoi pris en charge par lot asynchrone
Interfaces pour un adaptateur d’envoi pris en charge par lot asynchrone transactionnel
Interfaces pour un adaptateur d’envoi de type sollicitation-réponse