2016-03-23 10 views
3

Ich habe einen Zustand in der Saga und versuche, Statusprüfung Wiederholungen zu implementieren, bis ich einen befriedigenden Wert in einer Nachricht bekomme, die ich empfing.Bedingte Transition in MassTransit Automatonyme Sage

Sprich, ich habe so etwas wie dies:

.During(Pending, 
    When(StatusChecked) 
     .TransitionTo(somethingThatDependsOnStatusCheckedData) 

Ich kann nur einen bestimmten Zustand zu TransitionTo füttern, aber ich will es in Abhängigkeit von dem empfangenen Nachrichteninhalt zu überführen, ist es möglich?

Antwort

5

Für empfangenen Nachrichteninhalt können Sie den bedingten Ausdruck für die Klausel When verwenden.

During(Pending, 
    When(StatusChecked, context => context.Data.IsMessageCondition) 
     .Then(...)); 
+0

Kann ich mehrere 'When (StatusChecked, condition') in einem Zustand für denselben Nachrichtentyp haben? –

+0

Ja, aber jeder .Wenn() muss seinen eigenen Ausführungszweig haben. Ihre andere Frage sollte Ihnen eine Möglichkeit geben, das Verhalten wiederzuverwenden. –