接上篇的MQ配置。利用C#实现MQ消息的收发。源码

1.需要引入的dll是amqmdnet.dll

2.app.config配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings >
<add key="HostName" value ="192.168.1.40"/>
<add key="Channel" value ="CLIENT.QM_ORANGE"/>
<add key ="Port" value ="1418"/>
<add key ="QueueManager" value="QM_APPLE"/>
<add key="Queue" value="Q1"/>
</appSettings>
<connectionStrings>
<add name ="connectionString" connectionString ="Data Source=(local);Initial Catalog=TestDb; Integrated Security=SSPI" />
</connectionStrings>
</configuration>

3.MQ操作类

using System;
using System.Data;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using IBM.WMQ;
using System.Xml;
using System.Configuration;
using System.Windows.Forms; namespace WindowsFormsApplicationMQ
{ class Management
{
string queueName;
MQQueueManager qMgr;
MQMessage mqMsg;
MQQueue queue;
MQPutMessageOptions putOptions; #region 连接队列管理器 public Management()
{ }
string linkStatus;
public string LinkToQueueManager()
{
string QueueName = ConfigurationSettings.AppSettings["Queue"];
queueName = QueueName; Environment.SetEnvironmentVariable("MQCCSID", "");
if (MQEnvironment.properties.Count <= )
{
MQEnvironment.properties.Add(MQC.CCSID_PROPERTY, );
}
MQEnvironment.Port = Convert.ToInt32(ConfigurationSettings.AppSettings["Port"]);
MQEnvironment.Channel = ConfigurationSettings.AppSettings["Channel"];
MQEnvironment.Hostname = ConfigurationSettings.AppSettings["HostName"];
string qmName = ConfigurationSettings.AppSettings["QueueManager"];
try
{
if (qMgr == null || !qMgr.IsConnected)
{
qMgr = new MQQueueManager(qmName);
} linkStatus = "连接队列管理器:" + "成功!";
}
catch (MQException e)
{ linkStatus = "连接队列管理器错误: 结束码:" + e.CompletionCode + " 错误原因代码:" + e.ReasonCode;
}
catch (Exception e)
{ linkStatus = "连接队列管理器错误: 结束码:" + e;
}
return linkStatus;
}
#endregion #region 发送消息 public void SendMsg(string message)
{
int openOptions=MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE;
try
{
queue = qMgr.AccessQueue(queueName, openOptions); //尝试打开队列
}
catch(MQException e)
{
MessageBox.Show("打开队列失败:"+e.Message);
}
mqMsg = new MQMessage();
mqMsg.WriteString(message);
putOptions = new MQPutMessageOptions();
try
{
queue.Put(mqMsg, putOptions); //将消息放入消息队列
}
catch (MQException mqe)
{
MessageBox.Show("发送异常终止:"+mqe .Message );
}
finally
{
try
{
qMgr.Disconnect(); }
catch (MQException e)
{ }
}
} #endregion #region 接收消息 public DataSet receiveMsg()
{
int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE;
try
{
queue = qMgr.AccessQueue(queueName, openOptions); //尝试打开队列
}
catch (MQException e)
{
MessageBox.Show("打开队列失败:" + e.Message);
}
//从队列管理器中获得消息
MQGetMessageOptions mqGetMsgOpts;
mqMsg = new MQMessage();
mqGetMsgOpts = new MQGetMessageOptions();
mqGetMsgOpts.WaitInterval = ;
mqGetMsgOpts.Options |= MQC.MQGMO_WAIT;
try
{
int queryDep = queue.CurrentDepth;
if (queryDep > )
{
queue.Get(mqMsg, mqGetMsgOpts); //获得消息
var ds = new DataSet();
var table = new DataTable("T_School");
table.Columns.Add("ID", typeof(string));
table.Columns.Add("SchoolName", typeof(string));
table.Columns.Add("BuildDate", typeof(string));
table.Columns.Add("Address", typeof(string));
ds.Tables.Add(table);
string message = mqMsg.ReadString(mqMsg.MessageLength);
mqMsg.Format = MQC.MQFMT_XMIT_Q_HEADER;
var reader = new StringReader(message);
ds.ReadXml(reader, XmlReadMode.Fragment);
return ds;
} else
{
return null;
}
}
catch(MQException ex) {
MessageBox.Show("访问队列停止" + ex.InnerException);
return null;
}
finally
{
try
{
qMgr.Disconnect(); }
catch (MQException e)
{ }
}
}
#endregion
}
}

IBM的websphere MQ的c#使用(一)的更多相关文章

  1. IBM的websphere MQ的c#使用

    1.关于websphere MQ的常用名词(针对Websphere MQ7.5版本) 队列管理器:为应用程序提供消息传递服务的程序.使用消息队列接口(MQI)的应用程序可以将消息放置到队列并可从队列中 ...

  2. C#接收WebSphere MQ中文乱码问题

    最近在用IBM的WebSphere MQ做数据传输,客户端操作系统Windows,服务器是AIX,我们用的都是UTF-8编码,但是联调时发现带中文的都出现了乱码.折腾了好久才发现问题,原来是CCSID ...

  3. IBM WebSphere MQ的oracle的jdbc

    一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...

  4. IBM WebSphere MQ 7.5基本用法

    一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...

  5. IBM WebSphere MQ 通道类型配置

    IBM WebSphere MQ 通道类型配置 初学MQ,四种常见通道,windows下操作 目录 Sender--Receiver Server-Receiver Server-Requester ...

  6. IBM websphere MQ使用说明

    百度文库: IBM websphere MQ使用说明 IBM MQ安装和配置

  7. IBM WebSphere MQ介绍安装以及配置服务详解

    首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...

  8. IBM WebSphere MQ介绍安装以及配置服务详解(转)

    首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...

  9. IBM websphere MQ 消息发送与获取

    一. 所需依赖包,安装 IBM websphere MQ 后,在安装目录下的 java 目录内 import java.io.IOException; import java.util.Propert ...

随机推荐

  1. python文件和文件夹訪问File and Directory Access

    http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...

  2. POJ 1469(裸二分匹配)

    COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18993   Accepted: 7486 Descript ...

  3. 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算

    一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为 ...

  4. ASP.NET Core 使用 Alipay.AopSdk.Core 常见问题解答

    1.Alipay.AopSdk.Core.AopException:"您使用的私钥格式错误,请检查RSA私钥配置,charset = UTF-8" 出现这个问题,就是配置不正确.首 ...

  5. 深入理解计算机系统_3e 第八章家庭作业 CS:APP3e chapter 8 homework

    8.9 关于并行的定义我之前写过一篇文章,参考: 并发与并行的区别 The differences between Concurrency and Parallel +---------------- ...

  6. 微信小程序基于最新版1.0开发者工具分享-小试牛刀(视频)+发布流程

    第一章:小程序初级入门教程 小试牛刀[含视频] 视频地址:https://v.qq.com/x/page/i0554akzobq.html 这一章节中,我们尝试着写一个最简单的例子,包含 2 个静态页 ...

  7. Oracle数据库(一)概述、基础与简单操作

    数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 数据库分类: 关系型数据库 非关系型数据库 数据库 类型 特性 优点 缺点 关系型数据库 SQLite.Oracle. ...

  8. Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题

    问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1.  将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...

  9. IntelliJ IDEA如何设置头注释,自定义author和date

    下面这张图,保证你一看就会: 下面这个模板,你拿去改一改就行了. /** * @Author: Gosin * @Date: ${DATE} ${TIME} */ 如果觉得上面名字下面的波浪线碍眼,可 ...

  10. phpexcel用法(转)

    .php导出excel(多种方法) (2013-03-23 15:44:02) 转载▼   分类: php 基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只 ...