1、远程服务端通过工具创建专有队列(客户端不支持通过代码创建队列并且无法在客户端判断队列是否创建,也无法判断队列是否使用事务性)
2、客户端安装msmq服务
控制面板\所有控制面板项\程序和功能\打开或关闭Windows功能\MSMQ服务器(勾选所有功能)
3、引用System.Messaging
4、客户端远程推送消息到服务端
//使用IP
MessageQueue mq = new MessageQueue(@"FormatName:DIRECT=TCP:192.168.10.129\private$\paymessagequeue");
//使用机器名
MessageQueue mq = new MessageQueue(@"FormatName:DIRECT=OS:远程主机名\private$\paymessagequeue");
mq.Send("Sending MSMQ private message");
注意: FormatName 是表达式里唯一区分大小写的部分。其他部分可以随意使用大小写
5、客户端远程读取消息
using (MessageQueue mq = new MessageQueue(@"FormatName:DIRECT=TCP:192.168.10.129\private$\paymessagequeue"))
{
//设置消息队列的格式化器,
mq.Formatter = new XmlMessageFormatter(new Type[] { typeof(MessageEntity) });
//返回并移除此队列中的第一条消息
//Message firstmsg = mq.Receive();
//返回但不移除此队列中的第一条消息
Message firstmsg = mq.Peek();
//设置消息的格式化器
firstmsg.Formatter = new XmlMessageFormatter(new Type[] { typeof(MessageEntity) });
MessageEntity entity=firstmsg.Body as MessageEntity;
Console.WriteLine("Received The first Private Message is: {0}",entity.Body.NotifyUrl);
}