Estoy tratando de entender cómo funciona la multidifusión en MSMQ pero no puedo recibir ningún mensaje, incluso desde la misma máquina. Obviamente estoy haciendo algo mal pero no puedo ver qué.MSMQ: no se puede recibir de las colas de multidifusión
Aquí es donde estoy en:
creé manualmente una cola privada no transaccional llamada MulticastTest
y defina la dirección de multidifusión a 234.1.1.1:8001
. Entonces mi prueba de envío de aplicación hace esto:
MessageQueue queue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001");
queue.Send("Hello World");
Esto funciona, al menos parece enviar el mensaje que veo en una cola de salida en la misma máquina. Al menos asumo que esto es correcto, por favor dime si no es así.
Así que ahora intento ejecutar mi aplicación de recepción (ya sea en la misma máquina o en una diferente configurada para la misma dirección de multidifusión) y no puedo hacer que funcione. Si intento esto:
MessageQueue queue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001");
var message = queue.Receive();
Simplemente no va a funcionar, el método Receive()
lanza una excepción diciendo:
El nombre de formato especificado no es compatible con la operación solicitada. Por ejemplo, un nombre de formato directo cola No es posible borrar
Si trato y establecer la cola de recepción como .\private$\MulticastTest
que al menos espera un mensaje, pero no pasa nada, todos los mensajes aún permanecen en la cola de salida.
Entonces, ¿qué estoy haciendo mal? ¿Se debe ejecutar algún tipo de servicio para que MSMQ envíe mensajes desde la cola saliente?
También he intentado dar permisos completos al USUARIO ANÓNIMO según this question pero eso no tiene ningún efecto.
Hola Pedro, he seguido estos pasos todavía no estoy en condiciones de recibir el mensaje de máquina diferente, funciona bien en la misma máquina, vi ese mensaje en el registro de eventos, sugería 2 IP en el mensaje, agregué la clave con esa dirección IP. –
El enlace de Technet está muerto. ¿Podría actualizarlo o eliminarlo? –
@SeanB reemplazó el enlace por otro que con suerte transmite la información correcta, ¡fue hace bastante tiempo! –