国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

IBM WebSphere MQ的C#工具類以及源碼(net)

2019-11-17 02:04:38
字體:
供稿:網(wǎng)友

IBM WebSphere MQ的C#工具類以及源碼(net)

簡單的介紹一下MQ常用的對象

Queue Manager

隊列管理器

主要負責管理隊列、通道等,類似與Oracle中的Oracle實例的概念,在一臺服務器中可以定義多個Queue Manager。

Queue

隊列

是存放Message的對象,是我們主要操作的對象。類似與Oracle中的表的概念。

Message

消息

實際放入Queue中的消息,該消息可以存儲字符串、Stream等對象。

Channel

通道

是我們的應用以及兩個Queue Manager操作的鏈接對象

PRocess

過程

Queue的分類:

Local Queue

本地隊列

主要存儲消息的對象

Remote Queue

遠程隊列

和另外一個Queue Manager通訊的隊列

Mode Queue

模板隊列

建立一個隊列模板,通過這個模板可以建立與模板相同屬性的動態(tài)隊列。

Dynamic Queue

動態(tài)對了(臨時隊列)

可以在程序中創(chuàng)建和刪除的臨時隊列

MQ工具類:

using IBM.WMQ;using IBM.WMQ.PCF;using System;using System.Collections.Generic;using System.Linq;using System.Web;//using IBM.WMQAX;/// <summary>/// MQHelp 類庫///   henrylee/// </summary>public class MQHelp{    public MQHelp()    {    }    /// <summary>    /// 創(chuàng)建本地隊列    /// </summary>    /// <param name="qmName">隊列管理器</param>    /// <param name="queueName">隊列名稱</param>    /// <param name="isTransmissionQueue">是否為傳輸隊列</param>    public void CreateQueue(string qmName, string queueName, bool isTransmissionQueue = false)    {        PCFMessageAgent agent = new PCFMessageAgent(qmName);        PCFMessage request = new PCFMessage(CMQCFC.MQCMD_CREATE_Q);        request.AddParameter(MQC.MQCA_Q_NAME, queueName);        request.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL);        if (isTransmissionQueue) request.AddParameter(MQC.MQIA_USAGE, MQC.MQUS_TRANSMISSION);        PCFMessage[] response = agent.Send(request);    }    /// <summary>    /// 刪除隊列    /// </summary>    public void DelQueue(string qmName, string queueName)    {        PCFMessageAgent agent = new PCFMessageAgent(qmName);        PCFMessage request = new PCFMessage(CMQCFC.MQCMD_DELETE_Q);        request.AddParameter(MQC.MQCA_Q_NAME, queueName);        PCFMessage[] response = agent.Send(request);    }    /// <summary>    /// 讀取消息    /// </summary>    /// <returns></returns>    public string ReadMessage(string qmName, string queueName)    {        MQQueueManager qMgr = new MQQueueManager(qmName);        MQQueue queue = qMgr.accessQueue(queueName, MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING);        MQGetMessageOptions gmo = new MQGetMessageOptions();        gmo.Options = MQC.MQGMO_WAIT;        gmo.WaitInterval = 1000;        gmo.MatchOptions = MQC.MQMO_NONE;        MQMessage message = new MQMessage();        queue.Get(message);        return message.ReadString(message.MessageLength);    }    /// <summary>    /// 寫入消息    /// </summary>    public void WriteMessage(string qmName, string queueName, string body)    {        MQQueueManager qMgr = new MQQueueManager(qmName);        MQQueue queue = qMgr.AccessQueue(queueName, MQC.MQOO_OUTPUT);        MQMessage message = new MQMessage();        message.WriteString(body);        message.Format = MQC.MQFMT_STRING;        queue.Put(message);    }    /// <summary>    /// 獲取當前管理器所有隊列    /// </summary>    /// <param name="qmName">隊列管理器</param>    /// <param name="isFindSystemQueue">是否包含系統(tǒng)隊列</param>    /// <returns></returns>    public List<string> GetALLQueue(string qmName, bool isFindSystemQueue = false)    {        PCFMessageAgent agent = new PCFMessageAgent(qmName);        PCFMessage request = new PCFMessage(CMQCFC.MQCMD_INQUIRE_Q_NAMES);        request.AddParameter(MQC.MQCA_Q_NAME, "*");        PCFMessage[] response = agent.Send(request);        string[] names = response[0].GetStringListParameterValue(CMQCFC.MQCACF_Q_NAMES);        List<string> result = null;        if (!isFindSystemQueue)            result = names.ToList().Where(s => !s.Contains("AMQ.") && !s.Contains("SYSTEM.")).ToList();        else            result = names.ToList();        return result;    }    /// <summary>    /// 創(chuàng)建遠程隊列    /// </summary>    /// <param name="qmName">隊列管理器</param>    /// <param name="queueName">隊列名稱</param>    /// <param name="ycqmName">遠程隊列管理器名稱</param>    /// <param name="ycqueueName">遠程隊列名稱</param>    /// <param name="csqueueName">傳輸隊列名稱</param>    public void CreateRemoteQueue(string qmName, string queueName, string ycqmName, string ycqueueName, string csqueueName)    {        PCFMessageAgent agent = new PCFMessageAgent(qmName);        PCFMessage request = new PCFMessage(CMQCFC.MQCMD_CREATE_Q);        request.AddParameter(MQC.MQCA_Q_NAME, queueName);        request.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_REMOTE);        request.AddParameter(MQC.MQCA_REMOTE_Q_MGR_NAME, ycqmName);        request.AddParameter(MQC.MQCA_REMOTE_Q_NAME, ycqueueName);        request.AddParameter(MQC.MQCA_XMIT_Q_NAME, csqueueName);        PCFMessage[] response = agent.Send(request);        agent.Disconnect();    }    /// <summary>    /// 創(chuàng)建發(fā)送方通道    /// </summary>    /// <param name="qmName">隊列管理器</param>    /// <param name="channelName">通道名稱</param>    /// <param name="transmissionQueueName">傳輸隊列名稱</param>    /// <param name="

以下是前臺調(diào)用:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page{    public const string MQNAME1 = "ManageTest1";    public const string MQNAME2 = "ManageTest2";    public readonly MQHelp MQHELP = new MQHelp();    protected void Page_Load(object sender, EventArgs e)    {        if (!I
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 关岭| 福泉市| 盐边县| 澄城县| 平顶山市| 松阳县| 都昌县| 连山| 嘉峪关市| 东方市| 红桥区| 绍兴市| 米泉市| 开鲁县| 永修县| 南阳市| 镇雄县| 迁西县| 巩义市| 攀枝花市| 灵武市| 临夏市| 蒲城县| 兴文县| 靖远县| 昔阳县| 灯塔市| 太湖县| 宕昌县| 桐庐县| 三河市| 大渡口区| 南昌县| 桑日县| 高碑店市| 宁波市| 北安市| 洮南市| 海伦市| 荔波县| 兖州市|