He escrito una aplicación de muestra para escribir en una cola pública y privada que está en el servidor de desarrollo. No tengo la cola de mensajes instalada en mi máquina local.MSMQ: la cola de mensajes no se ha instalado en esta computadora
Recibo un error: la cola de mensajes no se ha instalado en esta computadora.
error es en esta línea:
MessageQueue.Exists(queueName)
Aquí está el código de prueba completa, todas las colas privadas y públicas comentadas y no comentado se han traducido en el mismo error. ¿Qué estoy haciendo mal aquí?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Messaging;
namespace MsmqTest
{
public partial class Form1 : Form
{
//@"DIRECT=OS:devbox01\PRIVATE$\PrivateQueueDev";
//@"DIRECT=TCP:192.168.6.102\PRIVATE$\PrivateQueueDev";
private const string QueueName = @"DIRECT=TCP:192.168.6.102\PRIVATE$\PrivateQueueDev";
//@"DIRECT=OS:devbox01\PublicQueueDev";
//@"DIRECT=TCP:192.168.6.102\PublicQueueDev";
private const string QueueNamePublic = @"DIRECT=TCP:192.168.6.102\PublicQueueDev";
public Form1()
{
InitializeComponent();
}
private void Write_Click(object sender, EventArgs e)
{
MessageQueue msgQ;
string msgText = String.Format("Message: {0}", DateTime.Now);
try
{
msgQ = GetQ(QueueNamePublic);
msgQ.Send(msgText);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private void Read_Click(object sender, EventArgs e)
{
}
private MessageQueue GetQ(string queueName)
{
MessageQueue msgQ;
if(!MessageQueue.Exists(queueName))
{
try
{
msgQ = MessageQueue.Create(queueName);
}
catch (Exception ex)
{
throw new Exception("Error creating queue", ex);
}
}
else
{
try
{
msgQ = new MessageQueue(queueName);
}
catch (Exception ex)
{
throw new Exception("Error getting queue", ex);
}
}
return msgQ;
}
}
}
¿Cuáles son mis alternativas aquí? No quiero instalarlo en la máquina de los usuarios, entonces enviaré el mensaje. ¿Puedo usar WCF? ¿Podría indicarme algún código de muestra que pueda ayudarlo? –
No hay alternativa si quiere usar MSMQ. No creo que habilitarlo en una máquina de usuarios deba ser un problema. Es parte de Windows. –
Tenemos entre 15 y 20 usuarios que necesitarán esto habilitado. ¿Qué puedo usar en lugar de MSMQ? Básicamente, los clientes enviarán una identificación y luego Listner tendrá que realizar algunas tareas por esa identificación. Tiene que ser un proceso de estilo de cola, primero en entrar primero en salir. –