2011-01-26 27 views
6

¿Hay alguna manera de purgar una cola de salida. No parece que puedo hacerlo con el MMC y cuando intento de purgar en el código me sale un error Format name is invalid el equipo que está enviando los mensajes a los que no existe, por lo que nunca se enviarán, sin embargo, la las colas llenaron el máximo espacio de almacenamiento para MSMQ así que cada vez que mi aplicación intenta enviar otro mensaje recibo la excepción insufficient resources.

He probado los siguientes formatos y todos ellos fallan con la excepción format name is invalid

DIRECTO = OS: ORDENADOR \ private $ \ nombrecola
OS: ORDENADOR \ private $ \ nombrecola
ORDENADOR \ private $ \ nombrecolaCómo purgar una cola de MSMQ saliente

+0

lo que es cola de salida? – Andrey

+3

Es la cola en la que se guardan los mensajes antes de que se envíen a otra computadora. – Brian

Respuesta

6

Usted debe ser capaz de purgar manualmente desde la MMC. MSMQ se vuelve muy tacaño cuando alcanza sus límites de almacenamiento, por lo que muchas operaciones fallarán con "permiso denegado" y cosas por el estilo.

La solución a largo plazo, obviamente, es modificar la configuración de modo que hay suficiente espacio de almacenamiento para sus patrones de uso particulares.

Editar: Usted puede ser que funcione en una limitación en la API administrada relacionada con las capacidades de administración y las colas remotas. Eche un vistazo al artículo this de Ingo Rammer. Incluso incluye un ejemplo p-invoke.

using (var msgQueue = new MessageQueue(GetPrivateMqPath(queueName, remoteIP), QueueAccessMode.ReceiveAndAdmin)) 
{ 
    msgQueue.Purge(); 
} 

en el que GetPrivateMqPath es::

if (!string.IsNullOrEmpty(remoteIP)) 
    return String.Format("FORMATNAME:DIRECT=TCP:{0}\\private$\\{1}", remoteIP, queueName); 
else 
    return @".\private$\" + queueName; 

QueueAccessMode.ReceiveAndAdmin puntos a cola de salida

+1

+1 Bonito artículo vinculado. – Filburt

+3

Buen artículo, pero no lo probé. Porque una de las imágenes en la pantalla me mostró lo que estaba haciendo mal jajaja. Estaba haciendo clic derecho en el nombre de la cola y exceptuando la opción de purga para aparecer allí. Tenía que ir más profundo y hacer clic derecho en "Mensajes de cola" – Brian

1

Usted podría intentar FORMATNAME:DIRECT=OS:computer\PRIVATE$\queuename.

3

es posible utilizar código para purgar una cola de salida administrado.

Cuestiones relacionadas