Frage

Ich bin nur neu in Service -Bussen (insbesondere Nservicebus) und habe gerade meine erste Saga geschrieben.

Die Saga soll eine Transaktion erhalten und dann Nachrichten aussenden, um die Benutzer -ID, Zahlungsdetails und Produktdetails usw. gegen ein meist geschlossenes System zu validieren (schwer zugänglich zugänglich). Jetzt ist ein Teil der Funktionalität einfach zu automatisieren und Handler zu schreiben. Es gibt jedoch einige Fälle, in denen eine manuelle Intervention erforderlich ist, um die Transaktion abzuschließen, da keine API zur Verfügung steht, um diese Aufgaben auszuführen. Jetzt werden wir mehrere menschliche Agenten haben, die dagegen arbeiten, sodass Gleichzeitverkäufe ein Problem sind, und ich dachte, warum nicht jeder Benutzer die nächste Nachricht auf Bedarf abzieht und so die mit MSMQ inhärente Parallelität nutze.

Ich konnte keine Methoden auf dem IBUS auf NhiberNate finden, um die nächste verfügbare Nachricht auf Bedarf abzurufen, da es so aussieht, als ob alles Push basiert. Daher habe ich eine prototypische AA -UI, die die Nachrichten von MSMQ mithilfe des Standard -.NET -Systems. Messaging.Messagequeue -API manuell abruft, und ermöglicht es dem Benutzer, mit diesem zu interagieren und dann die Rückkehr an die Saga zurück zu senden, indem Sie die Antwort über den IBUs zurückschreiben. Send () Methode.

Meine Hauptfrage in Bezug darauf lautet: Brechen Sie die finanzierten Prinzipien rund um NServicebus? Und wenn nicht, gibt es trotzdem durch die Nservicebus -API?

Würden Sie auch die Parallelität über das MSMQ oder über die UI -Anwendung bewältigen?

Prost

War es hilfreich?

Lösung

Alles in NSB ist absichtlich unidirektional für a ganze Reihe von Gründen. Um Ihre Kunden zu benachrichtigen, dass sie etwas tun müssen, können Sie ein View -Modell befragen, um festzustellen, ob in einem Intervall Arbeit zu erledigen ist. Die Saga wäre dafür verantwortlich, die richtigen Zeilen für die Benutzeroberfläche einzuführen/zu aktualisieren. Sobald die Benutzeroberfläche abgeschlossen ist, können Sie mit NSB () eine Nachricht an die Saga senden. Wenn dies eine Web -Benutzeroberfläche ist, lesen Sie das Asyncpages -Beispiel im Download.

Eine andere Möglichkeit, dies zu tun, besteht darin, eine Nachricht an den Client zu bringen, vorausgesetzt, dass Nachrichten zusammen mit dem Client installiert sind. Sie müssen eine Art Nachrichtenpumpe im Hintergrund erstellen. Sobald die Arbeit abgeschlossen ist, wird ein einfacher Send () dies tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top