C#基础之 --- 消息队列例子

来源:互联网 发布:怎么报网络教育 编辑:程序博客网 时间:2024/05/13 15:50

本机上创建一个消息队列:

namespace XXX.XXX.MSMQBuilder{    class Program    {        static void Main(string[] args)        {            MessageQueue mq = null;            //显示创建自身的消息队列            const string queueName = @".\Private$\jiyiqin";            if (!MessageQueue.Exists(queueName))            {                mq = System.Messaging.MessageQueue.Create(queueName);                Console.WriteLine("创建消息队列完成:" + queueName);            }            else            {                mq = new System.Messaging.MessageQueue(queueName);            }            mq.SetPermissions("Administrator", MessageQueueAccessRights.FullControl);            mq.SetPermissions("ANONYMOUS LOGON", MessageQueueAccessRights.FullControl);            mq.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);        }    }}


向远端机器的消息队列发送消息:

namespace SimMesssageSender{    class Program    {        static void Main(string[] args)        {            const string queueName = @"FormatName:Direct=TCP:192.168.1.100\Private$\jiyiqin";            AsyncMessage message = new AsyncMessage            {                                MessageBody = "测试消息,内容包含超链接 http://xxx.xxx.com/bbs/ ,点击跳转"            };            try            {                //将异步消息发往指定的消息队列                using (MessageQueue msmq = new MessageQueue(queueName))                {                    msmq.Formatter = new XmlMessageFormatter(new Type[] { typeof(AsyncMessage) });                    System.Messaging.Message msg = new Message() { Label = "业务模块异步消息", Body = message };                    msmq.Send(msg);                }            }            catch (Exception ee)            {                Console.WriteLine(String.Format("消息发送失败,原因是:{0}", ee.Message));            }            Console.WriteLine("发送完成,按任意键退出...");            Console.ReadKey();        }    }}

轮训本机上指定消息队列的消息:

static void ReceiveMsg()        {            const string queueName = @".\Private$\jiyiqin";// @"FormatName:Direct=TCP:192.168.1.104\Private$\jiyiqin";            while (true)            {                MessageQueue MQ = new MessageQueue(queueName);                System.Messaging.Message message = null;                try                {                    message = MQ.Receive(TimeSpan.FromSeconds(3));                }                catch (Exception ee)                {                    message = null;                    Console.WriteLine("从消息队列轮训消息出现异常,原因是:" + ee.Message);                    //continue;                 }                if (message != null)                {                    message.Formatter = new XmlMessageFormatter(new Type[] { typeof(AsyncMessage) });                    AsyncMessage msg = (AsyncMessage)message.Body;                    Console.WriteLine("轮训线程接收到一个异步消息: UserID is " + msg.UserID);                }            }        }

0 0
原创粉丝点击