Ich verwende MSMQ-Transport in unserer Rebus-Implementierung. Unten ist der Code für Rebus-Dienst starten:Handle Rebus MSMQ Warteschlange löschen
BuiltinHandlerActivator handlerActivator;
this.handlerActivator.Handle<TransportMessage>
(this.HandleTransportMessageAsync);
var bus = Configure.With(this.handlerActivator)
.Transport(t => t.UseMsmq(this.SenderName))
.Routing(r => r.TypeBased().AddEndpointMappingsFromAppConfig())
.Start();
Ich möchte Ausnahme/Fehler behandeln, falls jemand versehentlich Nachrichtenwarteschlangen mit Snoop/compmgmt.msc löscht.
Wenn ich die MSMQ-Nachrichtenwarteschlange manuell in Nachricht entfernen Warteschlangen erhalten wir einen Fehler mit Text
Rebus Arbeiter Warteschlange gelöscht wurde - werden keine Nachrichten mehr empfangen
.
Also, wollen Sie wissen, ist es in Rebus möglich, diese Ausnahme zu behandeln und einen Rückruf oder eine andere Möglichkeit zu liefern?
ich bemerkte, dass es eine Klasse MsmqTransport in Rebus.MSMQ Namespace, die belichten Methode AddQueueCallback liefert ähnlichen Rückruf genannt wird. Da ich Neuling für Rebus/MSMQ bin, bin ich nicht in der Lage, herauszufinden, wie man das benutzt. Jede Unterstützung wäre hilfreich.
Vielen Dank für Ihre schnelle Antwort. Wollte nur noch bestätigen, dass es nicht möglich ist, diese Ausnahme zu behandeln (um eine einfache Nachricht anzuzeigen, wie Sie in der Bearbeitung erwähnt haben)? Eine weitere Sache Kann ich MsmqUtil.QueueExists in einem Hintergrund-Timer-Worker verwenden, um zu überprüfen, ob eine Warteschlange vorhanden ist, wenn keine benutzerfreundliche Nachricht angezeigt wird ..? –
ja :) :) :) :) – mookid8000
(musste viele Smileys hinzufügen, um StackOverflow 15 Min Limit zu erreichen .... :)) – mookid8000