Question

Je suis tout nouveau pour les bus de service (en NServiceBus notamment) et vient d'écrire mon premier Saga.

La saga est destinée à recevoir une transaction, puis envoyer des messages hors tension pour l'ID des utilisateurs, les détails de paiement, et les détails du produit, etc. contre un système fermé la plupart du temps (difficile d'accès programatically). maintenant certaines des fonctionnalités est facile à automatiser et gestionnaires pour écrire, mais il y a quelques cas où une intervention manuelle est nécessaire pour compléter la transaction car il n'y a pas d'api disponible pour effectuer ces tâches. Maintenant, nous allons avoir plusieurs agents humains qui travaillent contre cette façon est une question concurrency, et je pensais pourquoi pas chaque pression utilisateur le message suivant à la demande, et ainsi utiliser la concurrence inhérente à MSMQ.

Je n'ai pas été en mesure de trouver des méthodes sur les iBus sur NHibernate pour permettre de récupérer le message suivant sur demande car il semble que tout est poussée en fonction. J'ai donc prototypé aa interface utilisateur qui récupère manuellement les messages de MSMQ en utilisant l'API standard .NET System.Messaging.MessageQueue et permet à l'utilisateur d'interagir avec cette puis envoyer le dos de retour à la saga en écrivant le dos de réponse via le iBus. méthode send ().

Ma principale question en ce qui concerne c'est: Est-ce que cette rupture les principes autour NServiceBus Regards croisés? et sinon est là de toute façon de le faire via l'API NServiceBus?

réagiriez-vous aussi la concurrence d'accès MSMQ ou par l'application de l'interface utilisateur?

Vive

Était-ce utile?

La solution

Everything in NSB is unidirectional on purpose for a whole host of reasons. In order to notify your clients that they need to do something you could poll a view model to see if there is work to be done on some interval. The Saga would be responsible for inserting/updating the right rows for the UI to pick up on. Once the UI is complete you can use NSB to Send() a message back to the Saga. If this is a web UI, check out the AsyncPages sample in the download.

Another way to do this would be to push a message to the client, assuming that messaging is installed along with the client. You will need to create some kind of message pump in the background. Again, once work is complete, a simple Send() will do.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top