zoukankan      html  css  js  c++  java
  • c#中如何操作消息队列

      “消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。

      消息被发送到队列中。“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

    c#中发往消息队列中发送消息

      public bool SendMessage(string title, string body)
            {
                MessageQueue SmsQueue = new MessageQueue();
                try
                {
                    string mqPath = System.Configuration.ConfigurationSettings.AppSettings["SiteEnvironmentMQPath"];//给基站告警用的(wz的程序)
                    string MQPath = string.Format(@"FormatName:DIRECT=TCP:{0}", mqPath);

                    SmsQueue.MessageReadPropertyFilter.Body = true;
                    SmsQueue.MessageReadPropertyFilter.AppSpecific = true;
                    SmsQueue.MessageReadPropertyFilter.Priority = true;
                    SmsQueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
                    SmsQueue.Path = MQPath;
                    Message objMsg = new Message();
                    objMsg.Label = title;
                    objMsg.Body = body;
                    SmsQueue.Send(objMsg);

            return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
                finally
                {
                    SmsQueue.Close();
                }
            }

    c# 从消息队列中取消息

     public string ReceiveMessage(string mqPath)
            {
                string ret = "";
                MessageQueue SmsQueue = new MessageQueue();
                try
                {
                    string MQPath = string.Format(@"FormatName:DIRECT=TCP:{0}", mqPath);
                    //string MQPath = System.Configuration.ConfigurationSettings.AppSettings["MQPath"];
                    SmsQueue.MessageReadPropertyFilter.Body = true;
                    SmsQueue.MessageReadPropertyFilter.AppSpecific = true;
                    SmsQueue.MessageReadPropertyFilter.Priority = true;
                    SmsQueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
                    SmsQueue.Path = MQPath;
                    Message objMsg = SmsQueue.Receive();
                    ret = objMsg.Body.ToString();
                }
                catch (Exception ex)
                {
                    //LogClass.WriteLog("错误", DateTime.Now.ToString(), ex.Message, "从消息队列读取告警数据");
                    //System.Threading.Thread.Sleep(Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["sleepTime"]));
                }
                finally
                {
                    SmsQueue.Close();
                }
                return ret;
            }

  • 相关阅读:
    【02】Nginx:基本配置和日志处理
    【01】Nginx:编译安装/动态添加模块
    【09】Jenkins:Pipeline 补充
    【08】Jenkins:关于发布
    【07】Jenkins:流水线(Pipeline)
    【06】Jenkins:Gitlab 自动触发构建以及钉钉通知
    【05】Jenkins:用户权限管理
    【04】Jenkins:基本功能补充说明
    【03】Jenkins:SonarQube
    【02】Jenkins:第一个项目
  • 原文地址:https://www.cnblogs.com/yinchengliang/p/1688494.html
Copyright © 2011-2022 走看看