2010-06-03 12 views
3

J'ai un NServiceBus Saga qui ressemble à ceciQue se passe-t-il dans une saga NServiceBus lorsque le message IAmStartedBy vient après le message IHandle?

public class MySaga : Saga<MySagaData>, 
           IAmStartedByMessages<MyStartMessage>, 
           IHandleMessages<OtherMessage> 

Mais les messages peuvent sortir de l'ordre. Que se passe-t-il lorsque le message IAmStartedBy vient après le message IHandle? Il n'y aura pas de SagaData pour OtherMessage. NServiceBus avale-t-il le message ou essaie-t-il de le traiter plus tard?

Répondre

4

NServiceBus ne parvient pas à trouver une saga active pour OtherMessage, réessayez le nombre de fois configuré et placez le message dans la file d'attente d'erreurs. Les tentatives peuvent différer suffisamment longtemps pour que MyStartMessage arrive. Quelle est la raison pour laquelle OtherMessage ne peut pas démarrer la saga? (vous pouvez avoir plusieurs messages qui peuvent démarrer une saga)

+0

Andreas. C'était la réponse, c'est-à-dire attendue. Je voulais éviter d'avoir plusieurs IAmStartedByMessages car cela complique le code pour chaque gestionnaire. – Simon

+1

L'un des domaines d'utilisation de Sagas est de gérer des situations comme la vôtre, où les messages peuvent arriver dans le désordre, donc je ne serais pas concerné par le fait d'avoir plusieurs IAmStartedBy. Bonne chance! –