Wie funktioniert die MSMQ-Nachrichtenübermittlung?

8

Ich wollte nur bestätigen, wie das Senden von Nachrichten an Remote-Transaktionsnachrichtenwarteschlangen funktioniert.

Angenommen, ich habe zwei Maschinen, A und B.

Maschine A verfügt über eine Transaktionsqueue, die zum Empfangen von Nachrichten verwendet wird. Ein Windows-Dienst überwacht diese Warteschlange und führt etwas mit den Daten aus (hält sie bei einem SQL Server). Maschine B führt eine Anwendung aus, die in die Warteschlange auf Maschine A schreiben muss.

Ein paar Fragen:

  1. Beim Senden der Nachricht wird eine lokale Kopie auf Maschine B erstellt, bevor sie an Maschine A gesendet wird ein. Wenn ja, tritt dieses Verhalten standardmäßig auf oder tritt es nur auf, wenn die Eigenschaft "IsRecoverable" gesendet wird?
    b. Hat die Tatsache, dass die Warteschlange transaktional ist, Auswirkungen auf dieses Verhalten?

  2. Da ich eine Transaktionswarteschlange verwende, wo sind die Daten, nachdem die Transaktion abgeschlossen ist? ein. Sitzt es lokal und wartet darauf, dass der msmq-Dienst die Nachricht an die ferne Warteschlange sendet?
    b. Oder befindet sich die Nachricht in der Warteschlange auf dem Remotecomputer?

Ich habe Probleme, die Dokumentation zu interpretieren. An einigen Stellen sehe ich, dass das Speichern und Weiterleiten beschrieben wird, aber ich habe Probleme zu verstehen, ob das das Standardverhalten bei Transaktions-Queues ist oder ob ich etwas explizit tun muss, um das zu erreichen.

    
Kartik 04.10.2011, 16:04
quelle

1 Antwort

6

Die wichtigste Information über Transaktions-MSMQ besteht darin, dass tatsächlich drei verschiedene Transaktionen bei der transaktionalen Übertragung einer Nachricht an eine ferne Warteschlange beteiligt sind.

  1. Der Absender schreibt die Nachricht in eine lokale temporäre Warteschlange.
  2. Der Warteschlangenmanager auf dem Absendercomputer überträgt die Nachricht über das Kabel an den Warteschlangenmanager auf dem Empfängercomputer.
  3. Der Empfängerdienst verarbeitet die Warteschlangennachricht und entfernt dann die Nachricht aus der Warteschlange.

Also in Beantwortung Ihrer Fragen:

  

Beim Senden der Nachricht wird zuvor eine lokale Kopie auf Maschine B erstellt   es wird an Maschine A geliefert?

Ja

  

Wenn ja, tritt dieses Verhalten standardmäßig auf oder tritt es nur auf, wenn   "IsRecoverable" Eigenschaft wird gesendet?

Standardmäßig. Dies ist bekannt als speichern und weiterleiten .

  

Hat die Tatsache, dass die Warteschlange transaktional ist, einen Einfluss darauf?   Verhalten?

Nein, außer bei einem Fehler.

  

Da ich eine Transaktionswarteschlange verwende, wo sind die Daten einmal die   Transaktion bestätigt?

Es hängt davon ab, welche Transaktion Sie meinen (siehe oben)

  

Sitzt es lokal und wartet darauf, dass der msmq-Dienst die Nachricht liefert   Nachricht an die ferne Warteschlange?

Nur wenn die ferne Warteschlange nicht verfügbar ist.

  

Oder befindet sich die Nachricht in der Warteschlange auf dem Remotecomputer?

Wenn der Empfängerdienst die Nachricht nicht erfolgreich verarbeiten kann (im Handler ist eine Ausnahme vorhanden), verbleibt die Nachricht in der fernen Warteschlange.

    
tom redfern 04.10.2011, 18:45
quelle

Tags und Links