微软 MSMQ 使用 第二章 构造MSMQ的框架类

一、本章主要介绍构建MSMQ的框架类,主要放在你的框架类里面,类名字命名为Messages,我的框架项目类名称是MingXu.FrameWork,我将Messages放到它下面,MingXu.FrameWork类型为Class Library

 

二、添加对System.Messaging的引用:

 MSMQ添加引用

 

MSMQ添加引用

 

 

三、代码如下:代码都有注释,所以不做过多的解释了,如果有看不明白的,请在评论里面留言,我在加注释

 

//******************************************************

//文件名:Messages.cs

//功能:MessageQueue框架类

//作者:徐明

//日期:2009-10-20

//*******************************************************

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Messaging;

using System.Net;

 

 

namespace MingXu.FrameWork

{

    public sealed class Messages

    {

        private static string _machineName = Dns.GetHostName();//获取机器名

        private static string QueuePath = ".//private$//"; //私有队列根路径

 

        /// <summary>

        /// 插入新的队列

        /// </summary>

        public static void CreateQueue(string Key)

        {

            if (!IsExit(Key))

            {

                MessageQueue mq = MessageQueue.Create(QueuePath + Key, true);

                mq.Label = QueuePath + Key;

                mq.SetPermissions("administrator", MessageQueueAccessRights.FullControl);

            }

        }

 

        /// <summary>

        /// 发送消息到WINDOWS队列

        /// </summary>

        /// <param name="QueueKey">sub path</param>

        /// <param name="Label">message name</param>

        /// <param name="Body">message content</param>

        /// <returns>bool</returns>

        public static bool Send(string QueueKey, string Label, string Body)

        {

            try

            {

                MessageQueue mq = new System.Messaging.MessageQueue(QueuePath + QueueKey);

                System.Messaging.Message msg = new System.Messaging.Message();

                msg.Formatter = new System.Messaging.ActiveXMessageFormatter();

                msg.Label = Label;

                msg.Body = Body;

                mq.Send(msg);

                return true;

            }

            catch (Exception ex)

            {

                Log.Debug(ex.Message);

                return false;

            }

        }

 

        /// <summary>

        /// 功能:获取当前机器下的所有私有的Queue名字的列表

        /// 日期:2009-10-20

        /// 作者:徐明

        /// </summary>

        /// <returns>List<string>Queue名称List</returns>

        public static List<string> GetQueueList()

        {

            if (string.IsNullOrEmpty(_machineName))

                return null;

 

            MessageQueue[] queueArray = MessageQueue.GetPrivateQueuesByMachine(_machineName);

            if (queueArray.Length == 0)

                return null;

 

            //转换MessageQueue[]类型到List<string>

            return queueArray.ToList<MessageQueue>().ConvertAll<string>(

                p =>

                {

                    return p.QueueName.Split('//')[1];

                }

                );

 

        }

 

        /// <summary>

        /// 功能:根据Queue名称获取Message的列表

        /// 日期:2009-10-20

        /// 作者:徐明

        /// </summary>

        /// <param name="queueName">Queue名称</param>

        /// <returns>List<string>Message名称List</returns>

        public static List<string> GetMessageList(string queueName)

        {

            if (string.IsNullOrEmpty(queueName))

                return null;

 

            MessageQueue mq = new MessageQueue(QueuePath + queueName);

            if (mq == null)

                return null;

 

            Message[] messageArray = mq.GetAllMessages();

            if (messageArray.Length == 0)

                return null;

 

            //转换Message[]类型到List<string>

            return messageArray.ToList<Message>().ConvertAll<string>(

                p =>

                {

                    return p.Label;

                }

            );

        }

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值