2010-07-23 16 views
7

Wie man eine Warteschlange in msmq mit C# abonnieren. Angenommen, ich habe einen Client als Win-Form und möchte ein que abonnieren, jedes Mal, wenn eine Nachricht in der Warteschlange angekommen ist, möchte ich, dass das Formular darüber informiert wird. Ein beliebiges Beispiel Dankeabonnieren Sie msmq

Antwort

3

Sie müssen sich die Typen im Namespace System.Messaging ansehen.

Es gibt vollständige asynchrone Unterstützung, so dass Sie auf eine Nachricht warten können, ohne Ihre Benutzeroberfläche anzuhalten (Sie müssen jedoch Control.BeginInvoke verwenden, um wie gewohnt für asynchrone Aktionen in WinForms in Ihre Benutzeroberfläche zurückzurufen).

MSDN hat viele Beispiele, z.B. von einem asynchronous message receive.

0

Wie @marc_s vorgeschlagen, dass Sie WCF-Dienst verwenden können, die entweder NetMsmq oder MSMQIntegrated Bindung verwenden können abonnieren Sie Nachrichten im MSMQ.

Wenn Sie keinen WCF-Dienst zwischen der Winforms-Anwendung und dem MSMQ einführen möchten, müssen Sie einen Abfragemechanismus erstellen, um in MSMQ nach dem Eintreffen neuer Nachrichten zu suchen.

1

Warum nicht einen Blick auf NServiceBus werfen?

Es ist eine sehr stabile und ausgereifte Plattform, die auf MSMQ basiert und direkt aus der Box Pub/Sub hat. Dead einfach zu beginnen, und keine Notwendigkeit, sich die Hände mit WCF schmutzig zu machen!