• ASP.NET 操作消息队列


     1public partial class _Default : System.Web.UI.Page
     2{
     3    private string queuePath = @".\Private$\mydemoqueues";
     4    protected void Page_Load(object sender, EventArgs e)
     5    {
     6        //异步获取消息
     7        GetQueueMessage();
     8    }

     9    protected void Button1_Click(object sender, EventArgs e)
    10    {
    11        MessageQueue mq;
    12        if(MessageQueue.Exists(@".\Private$\mydemoqueues"))
    13        {
    14            mq=new MessageQueue(@".\Private$\mydemoqueues");
    15        }

    16        else
    17        {
    18            mq = MessageQueue.Create(@".\Private$\mydemoqueues");    
    19        }

    20        BinaryWriter writer=new BinaryWriter(new MemoryStream());
    21        writer.Write(this.TextBox1.Text.Trim());
    22        Message msg=new Message();
    23        msg.BodyStream = writer.BaseStream;
    24        msg.Label = "发送信息,飘渺峰测试";
    25        mq.Send(msg);
    26
    27    }

    28    protected void Button2_Click(object sender, EventArgs e)
    29    {
    30        MessageQueue mq;
    31        Message msg=new Message();
    32        string result;
    33        if (MessageQueue.Exists(queuePath))
    34        {
    35            mq=new MessageQueue(queuePath);
    36        }

    37        else
    38        {
    39            mq = MessageQueue.Create(queuePath);
    40        }

    41        try
    42        {
    43            mq.MaximumQueueSize = 1000000;
    44            msg = mq.Receive(new TimeSpan(003));
    45            BinaryReader br=new BinaryReader(msg.BodyStream);
    46            result=new string(br.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
    47            this.TextBox2.Text = result;
    48            mq.Close();
    49        }

    50        catch (Exception)
    51        {
    52            Response.Write("没有消息可以接收!");
    53        }

    54    }

    55    /// <summary>
    56    /// 异步获取消息队列
    57    /// </summary>

    58    private void GetQueueMessage()
    59    {
    60        MessageQueue mq=new MessageQueue(queuePath);
    61        mq.Formatter = new XmlMessageFormatter(new Type[] {typeof (string)});
    62        mq.PeekCompleted+=new PeekCompletedEventHandler(MyMessageCompleted);
    63        mq.BeginPeek();
    64        return;
    65    }

    66
    67    private void MyMessageCompleted(object sender, PeekCompletedEventArgs e)
    68    {
    69        MessageQueue mq = (MessageQueue) sender;
    70        Message msg = mq.EndPeek(e.AsyncResult);
    71        BinaryReader reader=new BinaryReader(msg.BodyStream);
    72        string temp=new string(reader.ReadChars(Convert.ToInt32(msg.BodyStream.Length)));
    73        //Response.Write("这是异步队列信息:"+temp);
    74        this.TextBox2.Text = temp;
    75        mq.BeginPeek();
    76        return;
    77    }

    78
    79    private void SendMessage()
    80    {
    81        MessageQueue mq;
    82        if (MessageQueue.Exists(@".\Private$\mydemoqueues"))
    83        {
    84            mq = new MessageQueue(@".\Private$\mydemoqueues");
    85        }

    86        else
    87        {
    88            mq = MessageQueue.Create(@".\Private$\mydemoqueues");
    89        }

    90        BinaryWriter writer = new BinaryWriter(new MemoryStream());
    91        writer.Write("sdfsdfsd");
    92        Message msg = new Message();
    93        msg.BodyStream = writer.BaseStream;
    94        msg.Label = "发送信息,飘渺峰测试";
    95        mq.Send(msg);
    96    }
  • 相关阅读:
    关于并发量的简单计算公式
    kbmmw中向服务器端传递对象的一种简单方式
    tms web core 里面调用pascal 过程。
    tms web core 通过URL 传递参数
    tms web core 与 kbmmw 第一次亲密接触
    kbmmw 的HTTPSmartService 上传文件到服务器端
    kbmmw 中的进程管理小工具
    kbmmw 5.06.20 发布
    kbmmw ORM 对象定义语法简析
    kbmmw 5.06.00 beta 发布
  • 原文地址:https://www.cnblogs.com/rainnight/p/1115892.html
Copyright © 2020-2023  润新知