Partager via


<msmqIntegrationBinding>

Définit une liaison qui prend en charge la mise en file d’attente par routage des messages via MSMQ.

<configuration>
  <system.serviceModel>
    <liaisons>
      <customBinding>
        <binding>
          <msmqIntegrationBinding>

Syntaxe

<msmqIntegrationBinding>
  <binding closeTimeout="TimeSpan"
           customDeadLetterQueue="Uri"
           deadLetterQueue="Uri"
           durable="Boolean"
           exactlyOnce="Boolean"
           maxReceivedMessageSize="Integer"
           maxRetryCycles="Integer"
           name="String"
           openTimeout="TimeSpan"
           receiveContextEnabled="Boolean"
           receiveErrorHandling="Drop/Fault/Move/Reject"
           receiveTimeout="TimeSpan"
           receiveRetryCount="Integer"
           retryCycleDelay="TimeSpan"
           sendTimeout="TimeSpan"
           serializationFormat="XML/Binary/ActiveX/ByteArray/Stream"
           timeToLive="TimeSpan"
           useMsmqTracing="Boolean"
           useSourceJournal="Boolean">
  </binding>
</msmqIntegrationBinding>

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut Description
closeTimeout TimeSpan qui spécifie l'intervalle de temps prévu pour la réalisation d'une opération de fermeture. Cette valeur doit être supérieure ou égale à Zero. La valeur par défaut est 00:01:00.
customDeadLetterQueue URI contenant l'emplacement de la file d'attente de lettres mortes pour chaque application et dans laquelle sont placés les messages ayant expiré ou dont le transfert ou la remise a échoué.

La file d'attente de lettres mortes est une file d'attente du gestionnaire de files d'attente de l'application émettrice pour les messages ayant expiré et dont la remise a échoué.

L'URI spécifié par CustomDeadLetterQueue doit utiliser le schéma net.msmq.
deadLetterQueue Valeur DeadLetterQueue spécifiant le type de file d'attente de lettres mortes à utiliser (le cas échéant).

Une file d'attente de lettres mortes correspond à l'emplacement dans lequel sont transférés les messages dont la remise à l'application a échoué.

Pour les messages qui requièrent la garantie exactlyOnce (ceux pour lesquels l'attribut exactlyOnce a la valeur true), cet attribut a comme valeur par défaut la file d'attente de lettres mortes transactionnelle à l'échelle du système dans MSMQ.

Pour les messages qui ne requièrent pas de garanties, cet attribut a null comme valeur par défaut.
durable Valeur booléenne qui indique si le message est fiable ou volatil dans la file d'attente. Un message durable survit à une panne du gestionnaire de files d'attente, alors qu'un message volatil n'y survit pas. Les messages volatils sont utiles lorsque les applications requièrent la latence plus faible et peuvent autoriser la perte occasionnelle de messages. Si l'attribut exactlyOnce a la valeur true, les messages doivent être fiables. Par défaut, il s’agit de true.
exactlyOnce Valeur booléenne indiquant si chaque message est remis une seule fois. L'expéditeur est ensuite notifié des échecs de remise. Lorsque durable a pour valeur false, cet attribut est ignoré et les messages sont transférés sans garantie de remise. La valeur par défaut est true. Pour plus d'informations, consultez ExactlyOnce.
maxReceivedMessageSize Entier positif qui définit la taille maximale du message (en octets, en-têtes compris), qui est traité par cette liaison. L'expéditeur d'un message qui dépasse cette limite se verra notifier une erreur SOAP. Ce dernier dépose le message et crée une entrée d’événement dans le journal de suivi. La valeur par défaut est 65536. Cette limite de taille des messages a pour but d'atténuer l'exposition aux attaques par déni de service (DoS).
maxRetryCycles Entier indiquant le nombre de cycles de tentatives utilisés par la fonctionnalité de détection de messages incohérents. Un message devient incohérent lorsque toutes les tentatives de remise de tous les cycles échouent. La valeur par défaut est 2. Pour plus d’informations, consultez MaxRetryCycles.
name Chaîne qui contient le nom de configuration de la liaison. Cette valeur doit être unique car elle permet d'identifier la liaison. À partir de .NET Framework 4, les liaisons et les comportements ne sont pas tenus d’avoir un nom. Pour plus d’informations sur les liaisons et les comportements de configuration et sans nom par défaut, consultez Configuration simplifiée et Configuration simplifiée pour les services WCF.
openTimeout TimeSpan qui spécifie l'intervalle de temps prévu pour la réalisation d'une opération d'ouverture. Cette valeur doit être supérieure ou égale à Zero. La valeur par défaut est 00:01:00.
receiveErrorHandling Valeur ReceiveErrorHandling qui spécifie la façon dont sont gérés les messages incohérents et ne pouvant être distribués.
receiveRetryCount Entier indiquant le nombre maximal de nouvelles tentatives immédiates devant être effectuées par le gestionnaire de files d'attente si la transmission d'un message entre la file d'attente de l'application et l'application échoue.

Si le nombre maximal de tentatives de remise est atteint sans que l'application accède au message, ce dernier est envoyé à une file d'attente de nouvelles tentatives. La durée qui s'écoule avant que le message ne soit renvoyé à la file d'attente émettrice est contrôlée par retryCycleDelay. Si les cycles de nouvelles tentatives atteignent la valeur maxRetryCycles, soit le message est envoyé à la file d'attente de messages incohérents, soit un accusé de réception négatif est renvoyé à l'expéditeur.
receiveTimeout TimeSpan qui spécifie l'intervalle de temps prévu pour la réalisation d'une opération de réception. Cette valeur doit être supérieure ou égale à Zero. La valeur par défaut est 00:10:00.
receiveContextEnabled Valeur booléenne qui spécifie si le contexte de réception pour le traitement des messages dans les files d'attente est activé. Quand ce paramètre est défini sur true, un service peut lire un message dans la file d’attente pour commencer à le traiter et, en cas de problème et de levée d’exception, il reste dans la file d’attente. Les services peuvent aussi « verrouiller » des messages afin de réessayer de les traiter ultérieurement. ReceiveContext fournit un mécanisme pour « finaliser » le message une fois qu’il a été traité afin qu’il puisse être supprimé de la file d’attente. Les messages ne sont plus lus ni réécrits dans les files d’attente sur le réseau, et les messages individuels ne rebondissent pas entre différentes instances de service pendant le traitement.
retryCycleDelay Valeur TimeSpan qui spécifie l'intervalle entre les cycles de nouvelles tentatives de remise d'un message n'ayant pas pu être remis immédiatement. Cette valeur définit uniquement le délai d'attente minimum, car le temps d'attente réel peut être plus long. La valeur par défaut est 00:30:00. Pour plus d’informations, consultez RetryCycleDelay.
sendTimeout TimeSpan qui spécifie l'intervalle de temps prévu pour la réalisation d'une opération d'envoi. Cette valeur doit être supérieure ou égale à Zero. La valeur par défaut est 00:01:00.
serializationFormat Définit le format utilisé pour la sérialisation du corps du message. Cet attribut est de type MsmqMessageSerializationFormat.
timeToLive Valeur TimeSpan qui spécifie la durée de validité des messages avant leur expiration et leur déplacement dans la file d'attente de lettres mortes. La valeur par défaut est 1.00:00:00.

Cet attribut est configuré de façon à garantir que les messages dépendants de l'heure n'expirent pas avant d'être traités par les applications de réception. Un message dans une file d'attente qui n'est pas consommé par l'application de réception dans l'intervalle de temps spécifié est considéré comme ayant expiré. Les messages ayant expiré sont envoyés dans une file d'attente spéciale appelée file d'attente de lettres mortes. L'emplacement de cette file d'attente est défini par l'attribut DeadLetterQueue ou par la valeur par défaut appropriée, en fonction des garanties utilisées.
useMsmqTracing Valeur booléenne indiquant si les messages traités par cette liaison doivent être suivis. Par défaut, il s’agit de false. Lorsque le suivi est activé, des messages de rapport sont créés et envoyés à la file d'attente de rapports chaque fois que le message quitte ou atteint un ordinateur Message Queuing.
useSourceJournal Valeur booléenne qui spécifie si les copies de messages traitées par cette liaison doivent être stockées dans le journal source. Par défaut, il s’agit de false.

Les applications en file d'attente souhaitant conserver une trace des messages qui ont quitté la file d'attente sortante de l'ordinateur peuvent copier les messages dans une file d'attente de journal. Une fois qu'un message quitte la file d'attente sortante et qu'un accusé de réception est envoyé par l'ordinateur de destination, une copie du message est conservée dans la file d'attente du journal système de l'ordinateur émetteur.

Attribut {serializationFormat}

Valeur Description
Xml Format XML
Binary Format binaire
ActiveX Format ActiveX
ByteArray Sérialise l'objet en un tableau d'octets.
Flux Corps mis en forme en tant que flux

Éléments enfants

Élément Description
<security> Définit les paramètres de sécurité de la liaison. Cet élément est de type MsmqIntegrationSecurityElement.

Éléments parents

Élément Description
<bindings> Cet élément conserve une collection de liaisons standard et personnalisées.

Notes

Cet élément de liaison peut être utilisé pour permettre aux applications WCF (Windows Communication Foundation) d’envoyer et recevoir des messages vers/en provenance d’applications MSMQ existantes qui utilisent des API natives COM, MSMQ ou les types définis dans l’espace de noms System.Messaging. Vous pouvez utiliser cet élément de configuration pour spécifier les façons de gérer la file d’attente, de transférer les garanties, si les messages doivent être durablement stockés et comment ils doivent être protégés et authentifiés. Pour plus d’informations, consultez Guide pratique pour échanger des messages avec des points de terminaison WCF et des applications Message Queuing.

Exemple

<configuration>
  <system.ServiceModel>
    <bindings>
      <msmqIntegrationBinding>
        <binding closeTimeout="00:00:10"
                 openTimeout="00:00:20"
                 receiveTimeout="00:00:30"
                 sendTimeout="00:00:40"
                 deadLetterQueue="net.msmq://localhost/blah"
                 durable="true"
                 exactlyOnce="true"
                 maxReceivedMessageSize="1000"
                 maxImmediateRetries="11"
                 maxRetryCycles="12"
                 poisonMessageHandling="Disabled"
                 rejectAfterLastRetry="false"
                 retryCycleDelay="00:05:55"
                 timeToLive="00:11:11"
                 useSourceJournal="true"
                 useMsmqTracing="true"
                 serializationFormat="Binary">
          <security mode="None" />
        </binding>
      </msmqIntegrationBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

Voir aussi