que .net windows msmq

.net - msmq que es



Escribiendo a un MSMQ remoto (4)

Bueno, aquí hay una pregunta muy simple y fundamental. Si tengo una aplicación en la máquina A de Windows que quiere escribir en una cola en la máquina B de Windows, ¿necesito tener MSMQ instalado en la máquina A (aunque no haya cola allí)? Estoy empezando a usar colas para mis aplicaciones y estoy tratando de averiguar algunos aspectos fundamentales.

Gracias


Otro (en lugar de instalar MSMQ en la máquina local que ejecuta el cliente) sería implementar un servicio WCF que tome sus mensajes de una cola de MSMQ. En ese caso, su cliente remoto solo tendría que especificar el punto final del servicio remoto para que escriba directamente en la cola remota. También debería tener cuidado de que la seguridad en la cola remota se haya configurado correctamente.

Creo que esta sería una mejor manera de implementar la comunicación basada en colas. Esta es una respuesta corta, pero con mucho gusto la expandiré si está interesado (noté que estaba muy contento con la otra respuesta :)


Sí, necesita que MSMQ esté instalado localmente para escribir en una cola remota. Si está escribiendo en una cola privada, eche un vistazo a esta página que contiene información útil sobre cómo formatear el nombre de la cola. Si está escribiendo en una cola transaccional remota, debe asegurarse de especificarlo correctamente (punto 5)

Este es el texto del artículo:

1. Cuando se trabaja con colas remotas, el nombre de la cola en el formato nombre de machinename/private$/queuename no funciona. Esto da como resultado un error de "ruta de cola no válida".

2. El nombre de la cola debe mencionarse como FormatName:Direct=OS:machinename//private$//queuename .

Esto es necesario ya que el acceso a la cola se realiza internamente utilizando únicamente la sintaxis del nombre de formato. La otra representación amistosa se convierte a FormatName y luego se usa. Cuando trabaje con colas remotas, a menos que haya un AD para resolver el nombre de la cola, el nombre amistoso no funcionará. Echa un vistazo a la documentación para más detalles.

Por ej.

MessageQueue rmQ = new MessageQueue ("FormatName:Direct=OS:machinename//private$//queue"); rmQ.Send("sent to regular queue - Atul");

3. Además del punto anterior, tenga en cuenta que FormatName distingue entre mayúsculas y minúsculas. Si menciona la cadena anterior como FORMATNAME:Direct=OS:machinename//private$//queuename , no funcionará. Sorprendentemente, no hay error arrojado en este caso. La parte "FormatName" de la cadena parece ser la única parte que distingue entre mayúsculas y minúsculas. Otros pueden aparecer en diferentes casos. Por ejemplo. Puedes escribir "DIRECT".

4. En caso de que desee utilizar la dirección IP de la máquina, la sintaxis será FormatName:Direct=TCP:ipaddress//private$//queuename .

Por ej.

MessageQueue rmQ = new MessageQueue ("FormatName:Direct=TCP:121.0.0.1//private$//queue"); rmQ.Send("sent to regular queue - Atul");

5. Las propiedades transaccionales de la instancia de cola que crea en el código deben coincidir con las de la cola a la que está intentando enviar el mensaje. Así que en los ejemplos anteriores, estaba enviando un mensaje a una cola no transaccional. Para enviar a una cola transaccional, el código sería

MessageQueue rmTxnQ = new MessageQueue ("FormatName:Direct=OS:machinename//private$//queue"); rmTxnQ.Send("sent to Txn queue - Atul", MessageQueueTransactionType.Single);

Si las propiedades transaccionales no coinciden, el mensaje no se entregará. La parte sorprendente es otra vez, no recibí ningún error y el mensaje simplemente desapareció.

6. Finalmente, cuando envía mensajes a la cola remota, se crea una cola saliente temporal en su propia máquina. Esto se utiliza en caso de que la cola remota no esté disponible. Si accede a la consola de administración de la computadora (compmgmt.msc) y expande Servicios y aplicaciones / Message Queueing / Salientes de cola, verá estas colas. El lado derecho de la consola debe mostrar los detalles, incluidos el estado (conectado o no) y la (s) dirección (es) IP para el (los) siguiente (s) salto (s).


Todas las comunicaciones de MSMQ requieren un administrador de colas de MSMQ en cada extremo. Las aplicaciones que utilizan MSMQ se comunican con su gestor de colas local, que hace el trabajo por ellos. Las aplicaciones que utilizan MSMQ no pueden comunicarse directamente con ninguna cola, local o remota.


abajo el formato trabajado para nosotros

key="PublicQueueName" value="FormatName:Direct=TCP:192.168.12.58/private$/myqueue"

También necesitarías dar permisos de acceso a la cola remota.

seguridad: permitir el inicio de sesión de Anonymus