2011-11-22 13 views
10

Jaki jest najlepszy sposób korzystania z MSMQManagement z C#? Potrzebuję możliwości sprawdzenia i oczyszczenia lokalnej kolejki wychodzącej po odłączeniu komputera zdalnego.MSMQ COM API w języku C#

Najwyraźniej niektórzy użytkownicy mogą to zrobić za pośrednictwem interfejsu COM API, ale na karcie Referencje COM nie mam "Biblioteki obiektów Microsoft Message Queue 3.0", o której wspominają inne witryny/blogi/posty (ani nic podobnego) . Przeszukałem komputer pod kątem Interop.MSMQ.dll i nie mogę go znaleźć.

Używamy VS 2008 i działa na 64-bitowym Windows 7.

Czego mi brakuje? Czy istnieją inne mechanizmy umożliwiające osiągnięcie tego poprzez "normalne" zarządzane klasy?

Dzięki

+0

Jeśli nie masz zainstalowanej usługi MSMQ na komputerze z systemem Windows 7, przejdź do Panelu sterowania -> Programy i funkcje i dodaj funkcję MS MQ ... –

+0

Zainstalowany jest program MSMQ, podobnie jak serwer proxy DCOM. Mogę używać "normalnych" funkcji MSMQ bez problemu za pośrednictwem klasy System.Messaging. Czego nie mogę zrobić, to czyszczenie lub przeglądanie wiadomości w lokalnej kolejce wychodzącej, gdy komputer po drugiej stronie kolejki jest odłączony od sieci. Każda z tych operacji wygeneruje wyjątek MessageQueueException, gdy komputery nie są połączone. – Dan1701

+0

Istnieje wiele przykładów w sieci innych programistów korzystających z interfejsu API COM w celu uzyskania dostępu do klasy MSMQManagement za pośrednictwem kodu zarządzanego, który nie znajduje się w System.Messaging. Poniższe przykłady demonstrują dodanie odwołania do "Biblioteki obiektów Microsoft Message Queue 3.0" za pośrednictwem karty Referencje COM. Nie mam tego wyboru. Szukam sposobu, aby uzyskać ten DLL, lub przynajmniej dowiedzieć się, że nie będzie działać na Windows 7/Server 2008. – Dan1701

Odpowiedz

3

można go używać natywnie z .NET przy użyciu: System.Messaging.MessageQueue

Sprawdź te artykuły:

Accessing Message Queues

Reliable Messaging with MSMQ and .NET

+1

System.Messaging różni się od biblioteki COM API. System.Messaging nie zezwala na dostęp do lokalnej kolejki wychodzącej (chyba że znajduje się na tym samym komputerze co drugi koniec). Klasa MSMQManagement udostępnia pewne mechanizmy, ale nie mogę się dowiedzieć, jak uzyskać do niej dostęp za pośrednictwem kodu zarządzanego. – Dan1701

14

projekt + Dodaj Reference, kartę Browse . Przejdź do c: \ windows \ system32 (lub syswow64 w 64-bitowym systemie operacyjnym) i wybierz mqoa30.tlb. Spowoduje to utworzenie interopu Interop.MSMQ.dll, którego szukasz. Uważaj, że MSMQ jest opcjonalnym komponentem systemu Windows, musisz go najpierw zainstalować, jeśli plik nie jest obecny na twoim komputerze.

+0

To nie wydaje się działać (przynajmniej nie w Visual Studio 2010). Pojawia się następujący błąd: "Nie można załadować pliku lub zestawu" mqoa30.tlb "lub jednej z jego zależności.Oczekiwano, że moduł będzie zawierał manifest zespołu. Ten plik może nie być zarządzanym zbiorem." – Vaccano

+1

Potwierdziłem, że działa to w Visual Studio 2008, a nie w Visual Studio 2010. Zadałem pytanie na ten temat tutaj: http://stackoverflow.com/questions/9593538/how-to-add-a-reference-to -the-iterop-msmq-stuff – Vaccano

+1

Działa dobrze, gdy próbuję go w VS2010. Nie używasz zakładki Przeglądaj, nie rozpoznaję zrzutu ekranu. –

Powiązane problemy