我编写了一个示例应用程序来写入dev服务器上的公共和私有队列.我没有在本地计算机上安装消息队列.
我收到错误:此计算机上尚未安装消息队列.
错误在这一行:
MessageQueue.Exists(queueName)
Run Code Online (Sandbox Code Playgroud)
这是完整的测试代码,所有注释和未注释的私有和公共队列都会导致相同的错误.我在这做错了什么?
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
tom*_*ern 18
您需要在所有想要参与消息传输和接收的计算机上安装MSMQ.这包括在此实例中发送本地计算机等计算机.
这是因为MSMQ使用的存储转发消息传递模式.
http://en.wikipedia.org/wiki/Store_and_forward
当您向服务器"发送"消息时实际发生的情况是:
| 归档时间: |
|
| 查看次数: |
18625 次 |
| 最近记录: |