2011-11-22 18 views
10

¿Cuál es la mejor forma de usar MSMQManagement desde C#? Necesito la capacidad de mirar y purgar una cola saliente local cuando la máquina remota está desconectada.MSMQ COM API en C#

Parece que algunos usuarios pueden hacer esto a través de la API COM, pero en la pestaña Referencias COM, no tengo la "Biblioteca de objetos de Microsoft Message Queue 3.0" que otros sitios web/blogs/publicaciones mencionan (ni nada remotamente similar) . He buscado la máquina para Interop.MSMQ.dll y no puedo encontrarlo tampoco.

Estamos usando VS 2008 y corriendo en Windows 7 de 64 bits.

¿Qué me estoy perdiendo? ¿Existen otros mecanismos para lograr esto a través de clases administradas "normales"?

Gracias

+0

Si no tiene MSMQ instalado en su máquina con Windows 7, vaya a Panel de control -> Programas y características y agregue la característica MS MQ ... –

+0

MSMQ está instalado, al igual que el DCOM Proxy. Puedo usar características "normales" de MSMQ sin problema a través de la clase System.Messaging. Lo que no puedo hacer es purgar o mirar mensajes en una cola saliente local cuando la máquina en el otro extremo de la cola está desconectada de la red. Cualquiera de estas operaciones lanzará una MessageQueueException cuando las máquinas no estén conectadas. – Dan1701

+0

Hay muchos ejemplos en la web de otros desarrolladores que usan la API COM para acceder a una clase MSMQManagement, a través de un código administrado, que _no_ figura en System.Messaging. Estos ejemplos demuestran agregar una referencia a la "Biblioteca de objetos de Microsoft Message Queue 3.0" a través de la pestaña de referencias COM. No tengo esta selección. Estoy buscando una forma de obtener esta DLL, o al menos descubrir que no funcionará en Windows 7/Server 2008. – Dan1701

Respuesta

3

que se puede utilizar de forma nativa de .NET mediante: System.Messaging.MessageQueue

verificación de estos artículos:

Accessing Message Queues

Reliable Messaging with MSMQ and .NET

+1

System.Messaging es diferente de la biblioteca COM API. System.Messaging no permite el acceso a la cola saliente local (a menos que esté en la misma máquina que en el otro extremo). La clase MSMQManagement proporciona algunos mecanismos para hacer esto, pero no puedo averiguar cómo acceder a él a través de un código administrado. – Dan1701

14

proyecto + Agregar referencia, Navegar pestaña . Navegue a c: \ windows \ system32 (o syswow64 en un sistema operativo de 64 bits) y seleccione mqoa30.tlb. Esto crea el ensamblado de interoperabilidad Interop.MSMQ.dll que está buscando. Tenga en cuenta que MSMQ es un componente opcional de Windows, deberá instalarlo primero si el archivo no está presente en su máquina.

+0

Esto no parece funcionar (al menos no en Visual Studio 2010). Aparece el siguiente error: "No se pudo cargar el archivo o ensamblado 'mqoa30.tlb' o una de sus dependencias. Se esperaba que el módulo incluyera un manifiesto de ensamblaje. Este archivo puede no ser un ensamblado administrado". – Vaccano

+1

He confirmado que esto funciona en Visual Studio 2008 y no en Visual Studio 2010. Hice una pregunta al respecto aquí: http://stackoverflow.com/questions/9593538/how-to-add-a-reference-to -the-iterop-msmq-stuff – Vaccano

+1

Funciona bien cuando lo pruebo en VS2010. No está utilizando la pestaña Examinar, no reconozco la captura de pantalla. –