IBM的websphere MQ的c#使用(一)
接上篇的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#使用(一)的更多相关文章
- IBM的websphere MQ的c#使用
1.关于websphere MQ的常用名词(针对Websphere MQ7.5版本) 队列管理器:为应用程序提供消息传递服务的程序.使用消息队列接口(MQI)的应用程序可以将消息放置到队列并可从队列中 ...
- C#接收WebSphere MQ中文乱码问题
最近在用IBM的WebSphere MQ做数据传输,客户端操作系统Windows,服务器是AIX,我们用的都是UTF-8编码,但是联调时发现带中文的都出现了乱码.折腾了好久才发现问题,原来是CCSID ...
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- IBM WebSphere MQ 7.5基本用法
一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...
- IBM WebSphere MQ 通道类型配置
IBM WebSphere MQ 通道类型配置 初学MQ,四种常见通道,windows下操作 目录 Sender--Receiver Server-Receiver Server-Requester ...
- IBM websphere MQ使用说明
百度文库: IBM websphere MQ使用说明 IBM MQ安装和配置
- IBM WebSphere MQ介绍安装以及配置服务详解
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- IBM WebSphere MQ介绍安装以及配置服务详解(转)
首先介绍一下MQ MQ消息队列的简称是一种应用程序对应用程序的通信方法.说白了也就是通过队列的方式来对应用程序进行数据通信.而无需专用链接来链接它们. MQ的通讯方式 1.数据报的方式 Datagra ...
- IBM websphere MQ 消息发送与获取
一. 所需依赖包,安装 IBM websphere MQ 后,在安装目录下的 java 目录内 import java.io.IOException; import java.util.Propert ...
随机推荐
- 2.python的文件类型、变量数值和字符串练习
1.python的文件类型 .源代码 -python 源代码文件以"py"为扩展名,由python程序解释,不需要编译. 2.字节代码(编译的) -python源码文件经编译后生成 ...
- 【MySQL】(4)操作数据表中的记录
1. 插入记录INSERT 方法一: INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),( ...
- LeetCode(24) Swap Nodes in Pairs
题目 Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1-> ...
- 蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
关键词:蓝牙核心技术协议 irDA BNEP AVDTP AVCTP 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢! )欢迎指正错误,共同学习.共同进步!! 下载链接:Bl ...
- python列表的操作
1.列表的增加: li=[] li.append("hha") print(li) li=[] li.append("hha") print(li) li.in ...
- Django项目创建02
Django项目创建(ubuntu环境) 1. 创建项目目录,我是在root下创建了一个workspace文件夹:mkdir workspace 然后cd到该目录下 命令:django-adm ...
- .NET 实现Base-64加密解密处理
.NET 实现Base-64加密解密处理 using System; using System.Collections.Generic; using System.Linq; using System ...
- Android(Java) 字符串的常用操作,获取指定字符出现的次数,根据指定字符截取字符串
/*这是第100000份数据,要截取出100000*/ String s="这是第100000份数据"; String s1 = s.substring(s.indexOf(&qu ...
- 2. whoami,常用包,调优selinux,七种启动模式,系统开机服务
1 whoami 查看当前登录用户 useradd zhang 增加用户 passwd zhang su - zhang 切换用户 e ...
- JS中数组的迭代方法和归并方法
昨天总结的JavaScript中的数组Array方法 数组的迭代方法 ES5中为数组定义了5个迭代方法.每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响t ...
