消息队列编程实例

本文介绍了使用MSMQ实现消息传递的两种方式:专用队列和公用队列。通过示例代码展示了如何发送和接收消息,并对队列的属性进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.        专用队列

private void button1_Click(object sender, RoutedEventArgs e)

        {

            //在指定路径上创建一个消息队列的引用

            MessageQueue mq = new MessageQueue(".\\Private$\\MSMQDemo");

            //创建消息

            Message msg = new Message();

            msg.Body = textBox1.Text;

            //设置序列化器

            msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

            mq.Send(msg);

        }

 

        private void button2_Click(object sender, RoutedEventArgs e)

        {

            MessageQueue mq = new MessageQueue(".\\Private$\\MSMQDemo");

            Message msg = mq.Receive();

            //设置序列化器

            msg.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });

            textBox2.Text = msg.Body.ToString();

        }

2.        公用队列

       private void button1_Click(object sender, RoutedEventArgs e)

        {

            Info o = new Info();

            o.ID = "1";

            o.Name = "yo";

            PublicMsmq(o);

        }

 

        private void button2_Click(object sender, RoutedEventArgs e)

        {

            MessageQueue mq = new MessageQueue(".\\YoMQ");

            Message msg = mq.Receive();

            msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(Info) });

            Info o = msg.Body as Info;

            textBox2.Text = o.ID + o.Name;

        }

 

        public void PublicMsmq(Info info)

        {

            MessageQueue mq = new MessageQueue(".\\YoMQ");

            Message msg=new Message();

            msg.Body=info;

            msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(Info) });

            mq.Send(msg);

        }

    }

 

    public class Info

    {

        public string ID { get; set; }

        public string Name { get; set; }

    }

3.        队列标签

MessageQueue mq = new MessageQueue(".\\YoMQ");

 

            Console.WriteLine(mq.Label);

            //该队列的ID

            Console.WriteLine(mq.FormatName);

            Console.WriteLine(mq.Category.ToString());

            //MachineName 属性不支持 IP 地址格式。

            Console.WriteLine(mq.MachineName);

            Console.WriteLine(mq.QueueName);

            Console.WriteLine(mq.Path);

            Console.ReadKey();

        }

    }

 

    public class Info

    {

        public string ID { get; set; }

        public string Name { get; set; }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值