Pregunta

He creado un script para supervisar un conjunto de colas, y, aunque funciona perfectamente con Colas privadas remotas, que no funciona con salientes Colas. Hice un experimento eliminando todo menos lo esencial de la secuencia de comandos, y creé el siguiente script de prueba:

var info = new ActiveXObject("MSMQ.MSMQQueueInfo");
info.FormatName = /*<Queue name>*/;

// 0x80 = MQ_ADMIN_ACCESS
// 0x20 = MQ_PEEK_ACCESS
// 0x00 = MQ_DENY NONE
var mq = info.Open(0x80 | 0x20, 0x00);

var msg = mq.PeekCurrent(false, true, 0); 
if (msg != null) {
    WScript.echo("message found");  
}
else
{
    WScript.echo("Nothing");
}
mq.close();

Entonces corrió en el servidor y, aunque la cola contiene más de mil mensajes, PeekCurrent siempre devuelve un valor nulo. Si quito MQ_ADMIN_ACCESS intenta conectarse al mando a distancia cola privada y el tiempo de espera (como era de esperar, ya que es hacia abajo para permitir que los mensajes se acumulan). Si a continuación, iniciar el control remoto Cola privada, se lee correctamente el mensaje de ella.

Por curiosidad, he encontrado que info.Open no siempre tiene éxito importa el nombre de cola (es decir, si existe o no) cuando se utiliza MQ_ADMIN_ACCESS. Por ejemplo, he escrito "DIRECT = OS: Cualquiera que sea \ private $ \ RandomQueueName", y no he tenido ningún error

.

No soy un experto de MSMQ (todo lo contrario), por lo que estoy haciendo probablemente un error evidente y no puedo verlo. Cualquier ayuda es más que bienvenida. Gracias.

pregunta Side : ¿es posible mirar un saliente de colas remoto? En el momento en que el script se está ejecutando en la máquina en la cola saliente Estoy probando se encuentra, pero no es el único con estas colas. Me gustaría evitar el despliegue de la secuencia de comandos en todas partes, preferiría tenerlo en un solo lugar. Gracias.

¿Fue útil?

Solución

He encontrado las respuestas a mis dos preguntas:

  • El problema que estaba teniendo era debido al hecho de que he tratado de supervisar una cola MSMQ que se ejecuta como parte de un grupo de recursos de clúster, mientras que el guión se ejecuta bajo la actual sesión de consola. Para acceder a una cola dentro de un grupo de recursos de clúster, se debe hacer lo siguiente:

    1. Crear una nueva aplicación genérica
    2. Recursos dentro del Grupo donde el servicio MSMQ está en marcha, y el punto de que a su script.
    3. En la configuración del nuevo recurso, añadir el servicio de MSMQ como una dependencia.
    4. Asegúrese de que la casilla de verificación "Usar nombre de red como nombre del equipo" es comprobado .

Listo, la secuencia de comandos ahora se conectará al servicio MSMQ se ejecuta dentro del grupo de clúster.

  • colas de salida no son colas reales, pero pueden ser vistos como una "lista de mensajes, agrupados por la cola que están destinados a". Por lo tanto, no pueden ser controlados de forma remota. Esto significa que, para su seguimiento, el / Aplicación script que lo hace tiene que ser desplegado en cada máquina, y, en un entorno agrupado, una instancia deben ejecutar en cada grupo de clúster. Esto añade una sobrecarga significativa si hay muchos servidores, pero puede ser superado mediante la creación de un sistema centralizado. gran tarea de todos modos ...

espero que mis resultados sean útiles a alguien en el futuro. :) Volver a hornear pizza ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top