Archive

Articles taggués ‘ordered delivery’

Ordered Delivery of Messages

17/09/2009 Comments off

L’objectif est de s’assurer que les messages publiés dans un ordre donné dans la MessageBox soient transmis à chacun des abonnés dans le même ordre.

Cette option se configure :

  • dans un port d’envoi
  • ou, dans une shape Receive d’une orchestration

et, n’est pas supportée par les ports dynamiques ni les transports de backup.

Un flux end-to-end pour lequel l’on souhaite traiter les messages dans un ordre donné doit respecter les conditions suivantes :

  • Les messages doivent être recus par un adapter permettant de respecter cet ordre dans la transmission à la MessageBox.
  • La souscription à ces messages doit être réalisé par un port d’envoi présentant l’option Ordered Delivery activée.
  • Si une orchestration a souscrit à ces messages, celle-ci doit être unique en instance et doit implémenter le pattern sequential convoy (corrélation).  Enfin, la shape de réception doit présenter la propriété Ordered Delivery à True.

Attention, l’option Ordered Delivery se comporte différemment pour un port d’envoi si :

  • l’option de transport - du même port –  Stop sending subsequent message on current message failure est activée ou non  :
    • Si True, alors le port est suspendu et tous les messages ne sont plus traités; ainsi l’ordre des messages est fortement respecté.
    • Si False, alors seul le message en erreur est suspendu (état not resumable). Tous les autres messages continuent d’être traités. L’ordre des messages suspendu est conservé, mais un saut de séquence peut alors se produire
  • Si un port d’envoi de type solicit-response présente la propriété Stop sending subsequent message on current message failure à True, et si l’option recoverable interchange est configuré à l’étape de désassemblage du pipeline de réception de la réponse, alors le port d’envoi continue de transmettre les messages s’il existe une erreur dans le désassemblage de la réponse.

Mise en pratique par Richard SEROTER dans ce billet.