消息队列(一)——消息的简单发送与接收

简介:     背景           开发者经常遇到需要异步执行操作的情况(即过程不等到操作完成就开始)。消息队列提供一个中心位置或池,您可以在其中放置或从中提取数据,从而满足了这一要求。



    背景


          开发者经常遇到需要异步执行操作的情况(即过程不等到操作完成就开始)。消息队列提供一个中心位置或池,您可以在其中放置或从中提取数据,从而满足了这一要求。一个应用程序能够把消息存放在队列中,然后继续自己的业务,另一个应用程序在运行时再提取这些数据。



  简单理解

                

           感觉这里的消息队列还是一个典型的“buffer”思想:即就像喝水一样,如果有一杯水,我可能就直接喝掉了;但是如果有一壶水,我可能要先把水倒进杯子,然后再从杯子里喝水。


           消息队列在这里起到了个杯子的作用。



代码示例


       建立消息队列并发送一条消息

                           

          

            Message msg = null; //对列发送或读取的实际消息或数据
            MessageQueue mq = null; //接收/发送消息的MSMQ消息队列

            try
            {
                msg = new Message();
                msg.Priority = MessagePriority.Normal;//普通消息的优先级
                if (!MessageQueue.Exists(@".\Private$\TechRepublic"))
                {
                    mq = MessageQueue.Create(@".\Private$\TechRepublic");
                } //如果不存在则创建它
                else
                {
                    mq = new MessageQueue(@".\Private$\TechRepublic");
                }
                msg.Label = "Test Message";
                msg.Body = "this is only a test";
                mq.Send(msg);
                Console.WriteLine("message sent");

            }
            catch (System.Messaging.MessageQueueException ex)
            {

                Console.WriteLine("MSMQ Error:" + ex.ToString());
            }
            catch (Exception ex)
            {

                Console.WriteLine("error:" + ex.ToString());


            }
            finally
            { mq.Close(); }

 



       接收消息




              

 Message msg = null;
                MessageQueue mq = null;
                try
                {
                    mq = new MessageQueue(@".\Private$\Tepublic");
                    msg = mq.Receive(new TimeSpan(0, 0, 3));//timespan对象指定异常出现时系统的等待时间。
                    msg.Formatter = new XmlMessageFormatter(new string[] { "System.String,mscorlib" }); //对象被转换成字符串读取前面存储的文本
                    mq.Receive(); //从队列中读取消息,它的值显示在控制台中
                    Console.WriteLine(msg.Label.ToString() + "__" + msg.Body.ToString());

                }
                catch (System.Messaging.MessageQueueException ex)
                {
                    
                    Console.WriteLine("MSMQ Error"+ex.ToString());
                }
                catch(Exception ex)
                {
                
                    Console.WriteLine("Error:"+ex.ToString());
                }finally
                {
                
                    mq.Close();
                
                }




          未完待续,具体问题还没分析~







       

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
消息中间件 存储 监控
消息队列 MQ使用问题之客户端重启后仍然出现broker接收消息不均匀,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
消息中间件
|
消息中间件 存储 前端开发
同步异步调用,并谈谈消息队列mq;RocketMQ发送消息和消费消息测试类
同步调用优点: 时效性强,打电话、直播,很快可以得到结果 同步调用的问题:
626 1
|
消息中间件 关系型数据库 MySQL
5. 消息队列中,如何保证消息的顺序性?
5. 消息队列中,如何保证消息的顺序性?
602 0
5. 消息队列中,如何保证消息的顺序性?
|
消息中间件 存储 SQL
阿里云消息队列 Kafka-消息检索实践
本文章主要介绍消息队列使用过程中所遇到的消息丢失、重复消费等痛点问题的排查办法,以及消息队列 Kafka「检索组件」的场景实践,并对其关键技术进行解读。旨在帮助大家对消息队列 Kafka「检索组件」的特点和使用方式更加熟悉,以更有效地解决消息排查过程中所遇到的问题。
阿里云消息队列 Kafka-消息检索实践
|
消息中间件 物联网 Linux
消息队列中消息的格式|学习笔记
快速学习消息队列中消息的格式
|
消息中间件 存储 安全
如何使用消息队列的事务消息(下)
如何使用消息队列的事务消息
397 0
如何使用消息队列的事务消息(下)
|
消息中间件 NoSQL Kafka
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(下)
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(下)
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(下)
|
消息中间件 Kafka 数据库
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(上)
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(上)
消息队列之事务消息,RocketMQ 和 Kafka 是如何做的?(上)
|
消息中间件 存储 SQL
消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?(下)
消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?(下)
消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?(下)
下一篇
无影云桌面