- 浏览: 274377 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
Java_zhou:
...
Oracle自定义函数 -
wmj007:
SELECT USER_TAB_COLS.TABLE_NAME ...
Oracle 查询字段详细信息 -
avi9111:
怎么可以个人有一个MQ? 咁威的
使用c#操作IBM WebSphere MQ -
chouchouzzj:
8个小时。。。让我想起了世界时和北京时之间的差距,MQ存在时区 ...
使用c#操作IBM WebSphere MQ
.Net环境下操作IBM WebShpere MQ
大约在两年前项目使用了IBM MQ,本人积累了部分在.Net环境下操作IBM MQ的经验。现将经验与大家分享。
IBM WebShpere MQ 简单介绍:
具体的详细信息大家可以在IBM的网站和网上有许多的学习资料。
IBM MQ是实现了消息队列的一个中间件,它可以运行在现在所有流行的平台上。在我们的项目中主要使用的是AS400和UNIX平台上。
在IBM 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 |
模板队列 |
建立一个队列模板,通过这个模板可以建立与模板相同属性的动态队列。 |
Dynamic Queue |
动态对了(临时队列) |
可以在程序中创建和删除的临时队列 |
Channel类型:
在我们介绍中只使用了类型为SVRCONN的通道。
.Net连接Queue Manager的关键要素:
.Net的程序需要以下几个关键要素才能连接的一个Queue Manager上。
1、 Address & Port
MQ的服务器地址以及要连接的Queue Manager的监听端口,默认端口1414。
2、 Queue Manager Name
要连接的Queue Manager的名字,区分大小写,默认全部大写。
3、 Channel Name
SVRCONN类型的Channel的名字,需要注意的是该Channel的属性MCAUSER必须设置为一个足够权限的系统用户,否则不能连接成功。
4、 CCSID
CCSID是Queue Manager的编码字符集,需要Queue Manager的CCSID与你的.Net操作系统的CCSID互相兼容或者一致才能成功连接。默认情况下UNIX平台的Queue Manager的CCSID为819,而简体中文版的Windows的CCSID为1381。这两个编码字符集是不能兼容的,所以需要调整。
调整有两种方式:
1) 调整Queue Manager的CCSID,调整成与1381兼容的即可,不一定需要调整成1381
2) 在不能调整Queue Manager时需要配置Windows的环境变量,在Windows的环境变量中增加MQCCSID的环境变量,值需要与Queue Manager的CCSID一致或兼容。
在我们介绍的例子中使用环境如下:
Server:Sun OS 5.9
Address |
192.168.128.115 |
Port |
1414(默认端口) |
Queue Manager Name |
SGS.MGR |
Channel Name |
SGS.CHANNEL |
Queue Manager的属性如下(注意红色部分):
Display Queue Manager details.
DESCR( ) DEADQ( )
DEFXMITQ( ) CHADEXIT( )
CLWLEXIT( ) CLWLDATA( )
REPOS( ) REPOSNL( )
COMMANDQ(SYSTEM.ADMIN.COMMAND.QUEUE) QMNAME(SGS.MGR)
CRDATE(<chsdate w:st="on" year="2007" month="4" day="2" islunardate="False" isrocdate="False">2007-04-02</chsdate>) CRTIME(<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">16.24.23</chsdate>)
ALTDATE(<chsdate w:st="on" year="2007" month="4" day="2" islunardate="False" isrocdate="False">2007-04-02</chsdate>) ALTTIME(<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">16.24.23</chsdate>)
QMID(SGS.MGR_<chsdate w:st="on" year="2007" month="4" day="2" islunardate="False" isrocdate="False">2007-04-02</chsdate>_<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">16.24.23</chsdate>) TRIGINT(999999999)
MAXHANDS(256) MAXUMSGS(10000)
AUTHOREV(DISABLED) INHIBTEV(DISABLED)
LOCALEV(DISABLED) REMOTEEV(DISABLED)
PERFMEV(DISABLED) STRSTPEV(ENABLED)
<country-region w:st="on"><place w:st="on">CHAD</place></country-region>(DISABLED) CHADEV(DISABLED)
CLWLLEN(100) MAXMSGL(4194304)
CCSID(819) MAXPRTY(9)
CMDLEVEL(510) PLATFORM(UNIX)
SYNCPT DISTL(YES)
Channel的属性如下(注意红色部分):
Display Channel details.
CHANNEL(SGS.CHANNEL) CHLTYPE(SVRCONN)
TRPTYPE(TCP) DESCR( )
SCYEXIT( ) MAXMSGL(4194304)
SCYDATA( ) HBINT(300)
MCAUSER(mqm) ALTDATE(<chsdate w:st="on" year="2007" month="4" day="2" islunardate="False" isrocdate="False">2007-04-02</chsdate>)
ALTTIME(<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">16.30.23</chsdate>)
SENDEXIT( )
RCVEXIT( )
SENDDATA( )
RCVDATA( )
由于Queue Manager的CCSID使用819,故增加系统的环境变量:
<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype>
环境准备:
1、 安装IBM WebSphere MQ Client for Windows。(MQ客户端)
2、 安装WebSphere MQ classes for Microsoft .NET.msi。(.Net插件)
3、 在你的.Net项目中引用 amqmdnet.dll,该dll在.Net插件安装目录中可以找到。
开始编写代码:
连接Queue Manager
private MQQueueManager mqQMgr=null;// MQQueueManager instance
private void CreateMng()
{
if(this.mqQMgr==null)
{
try
{ this.log("Create Queue Manager");
//通过MQ管理名创建MQ管理实例
//判断是远程连接还是本地连接
if(!this.checkBox1.Checked) //本地连接 (服务器连接)
this.mqQMgr = new MQQueueManager(this.tbQMng.Text);
else //远程连接(客户端连接)
{
string hostname = this.tbConnection.Text; //Server地址
string channel = this.tbChannel.Text; //Channel 名
string qManager = this.tbQMng.Text; //Queue Manager名
//初始化环境变量
MQEnvironment.Hostname = hostname;
MQEnvironment.Channel = channel;
MQEnvironment.Port = Int32.Parse(this.textBox1.Text); //端口号
this.mqQMgr =new MQQueueManager(qManager);
}
this.log("Create Queue Manager Sucess");
}
catch(MQException ex)
{
this.mqQMgr=null;
this.log("Create Queue Manager Failed!"+ex.Message+"reason:" + Convert.ToString( ex.Reason,16));
}
}
}
向本地队列(SGS.IN.01)放入消息:
2
3 {
4
5 //定义队列
6
7 MQQueue mqQueue=null;
8
9
10
11 this.CreateMng(); //连接Queue Manager
12
13
14
15 try
16
17 {
18
19 if(this.mqQMgr==null)
20
21 return;
22
23
24
25 this.log("Create MQQueue");
26
27
28
29 //通过MQ管理创建队列实例
30
31 mqQueue=this.mqQMgr.AccessQueue(this.tbQName.Text,MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INQUIRE);
32
33//本例中this.tbQName.Text=”SGS.IN.01”
34
35
36
37
38
39 this.log("Create MQQueue Sucess");
40
41
42
43 }
44
45 catch(MQException ex)
46
47Codehighlighte
发表评论
-
想做一个wiki网站
2007-06-16 01:01 786很想做一个wiki网站,用来收集一些资源,不知道好不好 -
.net 编译器csc的用法大全
2007-07-03 13:08 14321. 配置环境变量:在path 变量中加上csc.exe的路径 ... -
ASP日期和时间函数
2007-07-04 11:37 1187<%=year(now)%>年<%=mo ... -
C# ini文件读写 类
2007-08-05 14:00 1545一个C# ini文件读写类,从网上收集的,很全,就是没有对se ... -
C# 接口
2007-08-13 16:18 785目录 接口的定义 ... -
c#索引器
2007-08-13 17:13 1303经常见有这样的类:如aClass a = new Class ... -
为sql server 表数据生成创建的储存过程(生成insert 脚本)
2007-08-14 13:35 1159使用SQL Server 2000自带的“生成SQL脚本”工具 ... -
学习MemberShip
2007-08-15 21:38 869这几天没时间,先收集一些资料(没有msdn就是不爽,上网速度有 ... -
sql server的随机函数newID()和RAND()
2007-08-16 20:15 1708sql server的随机函数newID( ... -
用The Regulator 学习正则表达式
2007-08-17 17:12 1056前几天发现一个好的学习正则表达式的工具 The Regulat ... -
C# float 与零比较(南京某公司面试题)
2007-09-01 02:48 2169写出float类型与零比较的判断语句 <script t ... -
我的.net学习资料
2007-09-11 00:55 1118我的.net学习资料 -
javascript 给text赋值
2007-09-25 12:27 2778javascript 给text赋值 方法一: <!D ... -
javascript权威指南例子(自己写的)
2007-10-03 14:17 876javascript权威指南例子(自己边看边写的) 前面几章的 ... -
msdn的javascript文章转载
2007-10-08 10:18 1067JavaScript 使用面向对象的技术创建高级 Web 应用 ... -
vs2005 调试时出现“无法附加。绑定句柄无效”的解决办法
2007-10-08 17:34 1217vs2005启动调试程序时,出现 无法附加,绑定句柄无效 ... -
vs 2005 启动设备仿真器管理器出错(wm5)解决方案
2007-10-10 12:14 1171vs 2005 启动设备仿真器管理器出错(wm5)解决方案,问 ... -
C#(.net) 线程和最小化到托盘的例子
2007-10-13 15:55 1047自己写的一个使用线程和最小化到托盘的例子。 例子下载当你看这个 ... -
ORACLE函数介绍
2007-10-17 12:22 793ORACLE函数介绍 第一篇 著名函数之单值函数 ... -
sqlserver 查询字段的详细信息
2007-11-29 19:54 884sqlserver 查询字段的详细信息 http://www. ...
相关推荐
在这个“Java下操作IBM Websphere MQ的项目案例”中,我们将探讨如何使用Java语言与IBM MQ进行交互,以及如何在Eclipse开发环境中设置和运行相关的项目。 首先,我们需要了解IBM MQ的基本概念。IBM MQ提供了一个...
WebSphere_MQ_V7.0.1.3 安装目录下\java\doc;\java\lib;\java\lib64. 包含com.ibm.mq.jar,com.ibm.mq.jmqi.jar,com.ibm.mq.axis2.jar,com.ibm.mq.commonservices.jar等等
IBM WebSphere MQ(简称WMQ或MQ)是一款企业级的消息中间件产品,它能够实现应用程序之间安全可靠的异步消息传递。无论应用程序是否同时处于运行状态,WebSphere MQ都能够确保消息能够被可靠地传递。在分布式计算...
WebSphere MQ(简称WMQ)是IBM提供的一款企业级消息中间件,它在分布式系统中起到了关键的角色,负责可靠地传递数据和消息。在WebSphere MQ 7版本中,它提供了更高级别的安全性和性能优化,支持多种编程语言如C++和...
### Web环境下的消息传递利用 WebSphere MQ Java接口为开发者提供了一种高效且灵活的方式来进行消息传递,尤其是在复杂的分布式环境中。该文档重点介绍了在Web环境中利用消息传递的一些关键优势。 #### 缓慢连结的...
Camel IBM Websphere MQ 到 Active MQ 桥接路由 先决条件 IBM 为安装在 Fuse 上的 MQ 客户端提供了 OSGi jar 文件IBM_MQ_INSTALL_DIR/java/lib/OSGi 运行 AMQ 代理 带有填充属性的 JBOSS_FUSE_INSTALL_DIR/etc/ 中...
WebSphere MQ,也被称为MQSeries,是IBM提供的一款强大的消息中间件产品,它允许应用程序在分布式环境中进行可靠的、异步的数据通信。随着其在中国的广泛应用,用户对性能优化和故障处理的需求日益增加。本文主要...
WebSphere MQ(以下简称“MQ”)作为IBM公司的一款成熟稳定的通信中间件产品,在众多企业中得到了广泛的应用。然而,在实际部署和使用过程中,难免会遇到各种运行故障,这些故障可能由多种因素引起,包括但不限于...
1. **备份当前环境**:在进行任何升级操作之前,务必对现有的 WebSphere Portal 环境进行全面备份,包括但不限于应用程序、配置文件、数据库等。 2. **检查兼容性**:确认新的 JDK 版本、WAS(WebSphere Application...
IBM WebSphere MQ 是一个消息中间件产品,它能够帮助应用程序在分布式环境中可靠地发送和接收消息。通过使用 WebSphere MQ,开发人员可以构建出高度可扩展且健壮的应用程序。本文章基于 WebSphere MQ C++ 应用接口 ...
WebSphere MQ 是 IBM 提供的一款高效、可靠的中间件产品,用于在不同的应用程序之间传递消息。在本文中,我们将深入探讨如何在WebSphere MQ 7.0版本中进行配置和测试,以及如何通过Java源码实现消息的发送和接收。 ...
**标题解析:** "MQ.zip_MQ_c++ mq" 暗示这是一个关于使用C++编程语言与IBM WebSphere MQ(通常简称为MQ)交互的压缩包文件。MQ是IBM提供的一种消息中间件,用于在分布式系统中可靠地传递消息。 **描述分析:** ...
如何进行WebShpere MQ 运行故障的定位分析和排除
MQ+for+Linux+安装配置手册.pdf mq安装手册1.doc WAS+6.1安装手册installation+guide.pdf WebShpere MQ 配置与测试.txt WebSphere MQ 常用命令.txt
### WebSphere 7.0.0.0 部署手册关键知识点解析 ...通过按照这些步骤操作,用户可以顺利地在WebSphere 7.0环境中部署和运行Java EE应用程序。此外,还提供了必要的配置示例和截图,帮助读者更好地理解和执行每个步骤。
WebSphere MQ(简称WMQ)是一种消息中间件,用于在分布式环境中实现应用间的安全、可靠的消息传递。它提供了丰富的功能来满足不同规模的企业需求,包括但不限于消息路由、事务处理、安全性控制等。WMQ支持多种消息...
总结,WebSphere MQ C客户端的实现涉及到了队列管理器连接、队列操作以及消息的发送,通过VC++的工程实例,我们可以更好地理解如何在C语言环境中利用MQI接口与WebSphere MQ进行交互。这个项目为学习和实践WebSphere ...
- 在Windows NT环境下,可通过“控制面板”中的“添加/删除程序”进行卸载。 - 或者通过“开始”菜单下的“程序”-> “IBM WebSphere”-> “WebSphere应用服务器版本1.x”进行卸载。 #### 四、配置与调优 **1. ...