2009-05-28 4 views
3

Ich habe ein System, das ein Objekt über WCF mit MSMQ an einen anderen Dienst sendet. Der Service nimmt die Nachricht gut auf und tut was damit zu tun hat. Aber das Problem, das ich jetzt habe, ist, dass ich eine Antwort an das anrufende System senden muss.
Beispiel:WCF MSMQ Callback-Funktion

  1. ein Objekt Kunden erstellen
  2. Füllen Sie die Informationen
  3. die Nachricht an den Dienst senden WCF über MSMQ
  4. aus der Warteschlange
  5. Wählen Sie die Nachricht einen Windows-Dienst
  6. mit mit bis
  7. Rufen Sie Customer.Insert() -Methode für den Windows-Dienst
  8. Ich muss jetzt die neue Kundennummer zurück an die aufrufende Anwendung hier senden.

Irgendwelche Ideen?

Antwort

3

Sie Duplex-Kommunikation mit msmq verwenden können, aber nicht nativ, werfen Sie einen Blick auf my article

1

MSMQ Die Operation muss auf eine Weise erfolgen. Die einzige Möglichkeit, eine Nachricht zurück zu empfangen, besteht darin, dass Ihre anrufende Anwendung auch einen Dienst für Antworten hostet, da keine Duplex-MSMQ-Bindung vorhanden ist.

4

Wie Emmanuel darauf hinweist - MSMQ-Nachrichten sind von Design One-Way und haben keine Antwort, wirklich.

Ihre beste Lösung wäre eine Antwortwarteschlange, in die der "andere Dienst" seine Antwortnachrichten eingeben kann. Ihr Client müsste dann diese Warteschlange überwachen, z. überprüfe es ab und zu (jede Minute, alle 30 Minuten - was immer für dich Sinn macht) nach neuen Nachrichten und handle mit ihnen.

Es gibt keine Duplex (Zweiwege) MSMQ-Kanäle - Sie können jedoch problemlos ein Paar separate Warteschlangen für beide Richtungen erstellen.

Marc

+0

hmm ja das ist, was ich über war besorgt. Hmmmmm danke für die Info – Neale