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 ...
随机推荐
- 解析XML文件之使用SAM解析器
XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...
- Mybatis实现 --文件夹
本文是关于MyBatis的实现机制的探索,文章大量參考了网络上已有的相关文章并结合最新版本号的Mybatis做的整理 文件夹例如以下: Mybatis实现[1] ---Mybatis Basic[Ja ...
- Android酷炫有用的开源框架
一.代码库 1.from 代码家 整理比較好的源代码连接 一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才開始支持的,ActionBarSher ...
- MooseFS代码分析(一)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- [转]压缩感知重构算法之分段正交匹配追踪(StOMP)
分段正交匹配追踪(StagewiseOMP)或者翻译为逐步正交匹配追踪,它是OMP另一种改进算法,每次迭代可以选择多个原子.此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的 ...
- 《精通c#(第6版)》【PDF】下载
图灵程序设计丛书:精通C#(第6版)是C#领域久负盛名的经典著作,深入全面地讲解了C#编程语言和.NET平台的核心内容,并结合大量示例剖析相关概念.全书分为八部分:C#和.NET平台.C#核心编程结构 ...
- 48、mysql补充
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- HttpClient4.5 post请求xml到服务器
1.加入HttpClient4.5和junit依赖包 <dependencies> <dependency> <groupId>org.apache.httpcom ...
- kafka副本机制之数据可靠性
一.概述 为了提升集群的HA,Kafka从0.8版本开始引入了副本(Replica)机制,增加副本机制后,每个副本可以有多个副本,针对每个分区,都会从副本集(Assigned Replica,AR)中 ...
- 使用 Kafka 和 ELK 搭建测试日志系统(1)
本文仅供自己学习,不合适转载. 这是两篇文章的第一部分. 1. 安装 ELK 1.1 安装 ElasticSearch 在海航云上创建一个 Ubutu 16.4 虚机,2核4GB内存. (1)执行以下 ...
