Partager via


Élimination des risques de limitation des messages corrélés

Les messages mis en file d'attente dans un serveur BizTalk Server, par exemple via un emplacement de réception ou par des orchestrations, peuvent être traités de l'une des manières suivantes :

  • Ils peuvent activer de nouvelles instances d'abonnés (c'est-à-dire des orchestrations ou des ports d'envoi).

  • Ils peuvent être acheminés vers une instance d'abonné existante via la corrélation. Pour plus d’informations sur la corrélation, consultez Utilisation de corrélations dans les orchestrations.

    Les développeurs sont nombreux à voir les emplacements de réception comme une solution pour recevoir des messages d'activation et corrélés via un même port. Rien d'étonnant à cela puisque le nombre d'adresses dont les expéditeurs des messages doivent garder la trace est ainsi réduit. Toutefois, avec la limitation dans BizTalk Server, il peut y avoir des avantages à penser au flux de messages d’activation et au flux de messages corrélés séparément lorsqu’il s’agit de la limitation.

    Lorsque les messages d'activation et les messages de corrélation arrivent via le même emplacement de réception, ils sont soumis au même état de limitation car la limitation est appliquée au niveau de l'hôte. Il en résulte que tous les messages arrivant aux emplacements de réception dans l'hôte sont limités sous la forme d'une unité. Cela ne pose pas de problème dans la plupart des cas mais il peut arriver que la limitation de corrélations avec des activations puisse entraîner des blocages du système.

Exemple

Supposons par exemple que vous ayez une orchestration qui reçoive une activation, qui l'utilise pour initialiser un ensemble de corrélations, puis qui reçoive un convoi de dix messages supplémentaires à la suite de l'ensemble de corrélations. Supposons de plus qu'en conditions de charge, une accumulation se produise au niveau du spooleur lors de l'arrivée du mélange de messages d'activation et de corrélation, et que cette accumulation entraîne une limitation de la quantité des messages pouvant être reçus. Malheureusement, les messages de corrélation étant limités avec les activations, cela ralentit l'exécution des orchestrations et entraîne ainsi une nouvelle accumulation et une limitation supplémentaire. Si ce scénario se poursuivait, on assisterait à la limitation du système jusqu'à un débit proche de zéro.

En divisant l'emplacement de réception unique en deux, un emplacement pour les activations et un emplacement pour les corrélations, et en configurant les emplacements dans des hôtes distincts, le seuil de limitation de la taille de la base de données correspondant aux activations peut être maintenu à un niveau plus bas que celui correspondant aux corrélations, ce qui permet de réduire le nombre global des blocages et de maintenir la transmission des messages.

Vous vous demandez peut-être : « Pourquoi ne puis-je pas simplement augmenter le seuil de taille de base de données pour mon emplacement de réception unique pour résoudre le problème ? » La réponse est, vous pouvez, mais cela n’aboutit pas toujours au comportement souhaité. La limitation sert surtout à protéger le système contre les surcharges. Si vous élevez suffisamment les seuils ou si vous les désactivez complètement, vous ôterez cette protection.

Recommandation

La meilleure chose à faire dans les scénarios similaires à celui décrit ci-dessus est de répartir les emplacements de réception dans des hôtes distincts pouvant être limités de façon indépendante.

Lorsque des hôtes distincts sont configurés pour des emplacements de réception, définissez le seuil de limitation de la taille de base de données correspondant à l'hôte utilisé par les emplacements de réception sur une valeur inférieure à celle du seuil correspondant aux hôtes utilisés par les orchestrations ou les corrélations.

Si vous savez que votre charge ne dépassera jamais le débit maximal acceptable du système, ou que les pics de débit sont récupérables entre les événements de pic, élever les seuils de limitation pourra aussi être une solution mais ne permettra sans doute pas un débit aussi élevé que si vous utilisiez des hôtes distincts pour les activations et les corrélations.