五MQ其他 MQI 主题Word格式文档下载.docx
- 文档编号:18315113
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:39
- 大小:922.18KB
五MQ其他 MQI 主题Word格式文档下载.docx
《五MQ其他 MQI 主题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《五MQ其他 MQI 主题Word格式文档下载.docx(39页珍藏版)》请在冰豆网上搜索。
分发列表
先决条件
本教程是为具有应用程序和解决方案设计和实现方面的中级经验的开发人员和架构师编写的。
它假设您具有以下几方面中级知识和技能:
事务管理和数据库产品
系统管理
基本编程概念
数据通信和网络
信息技术安全概念
系统要求
本教程中的示例使用WebSphereMQV6.0forWindows®
和Rational®
ApplicationDeveloperV6.0forWindows开发。
本教程中使用的产品的系统要求可通过以下链接找到:
WebSphereMQ
RationalApplicationDeveloper
[本帖最后由阳春三月于2008-7-718:
09编辑]
搜索更多相关主题的帖子:
SolutionDesignerMQIWebSphere考试SolutionDesignerMQIWebSphere考试
查看详细资料
TOP
阳春三月
版主
帖子141积分1311金钱1000W币注册时间2008-7-7个人空间发短消息加为好友当前离线2#大中小发表于2008-7-718:
05只看该作者
WebSphere入门开窍班第6期:
剪不断理还乱的Portal问题汇总|谁是未来存储架构师?
成就下一代信息架构|《WebSphere中国》杂志免费领取
MQINQ和MQSET
概述
MQINQ谓词允许您查询任何队列、进程、队列管理器或名称列表的所有属性从程序中,您可以使用此调用来发现诸如队列的最大消息长度、进程所指向的应用程序、队列管理器的死信队列或名称列表的属性列表等内容。
MQSET谓词允许您更改属性,但是只能更改队列的属性。
您能够设置的属性主要与触发相关联。
MQINQ和MQSET调用都使用选择器数组来标识您希望查询或设置的那些属性。
您能够处理的每个属性有一个对应的选择器。
选择器名称具有前缀,由属性的性质确定:
[attach]805[/attach]
在使用MQINQ或MQSET调用前,必须将应用程序连接到队列管理器,并且必须使用MQOPEN调用来打开对象以便设置或查询属性。
MQINQ
MQINQ调用可用于了解WebSphereMQ对象的属性设置。
这包括队列、队列管理器、进程和名称列表。
该调用返回一个整数数组和一组字符串,其中包含所请求的属性。
在发出MQINQ调用前,需要首先打开对象以便查询。
MQINQ调用的语法如下:
复制内容到剪贴板代码:
MQINQ(Hconn,Hobj,SelectorCount,Selectors,IntAttrCount,IntAttrs,
CharAttrLength,CharAttrs,CompCode,Reason)
MQINQ(以及MQSET)所需的参数比任何其他MQI调用的参数都多。
其他调用上的常用参数包括作为前两个参数的连接句柄(Hconn)和对象句柄(Hobj)。
与所有MQI调用一样,最后两个参数是完成代码(CompCode)和原因代码(Reason)。
通过将其他参数划分为组,理解它们是相当容易的:
SelectorCount和Selectors
IntAttrCount和IntAttrs
CharAttrLength和CharAttrs
SelectorCountMQINQ中包括的属性总数。
它不过就是您所查询的属性数量计数。
Selectors是那些属性的数组(或列表)。
每个属性都分配了一个符号名称,可以使用它来代替分配给该属性的数值。
WebSphereMQApplicationProgrammingReference(请参见参考资料)中的MQINQ讨论中按对象列出了所有属性。
IntAttrCount表示为整数的选择器总数。
这其中包括诸如MQIA_CURRENT_Q_DEPTH、MQIA_Q_TYPE或MQIA_MAX_Q_DEPTH等选择器。
IntAttrs是一个数组(或列表),将用于返回所请求的整数属性。
CharAttrLength已请求的所有字符属性的总长度。
CharAttrs是一个缓冲区区域的名称,所有请求的字符属性将作为一个长字符串在该缓冲区中返回,直到该字符串达到CharAttrLength所指定的长度。
设置字符属性要比设置整数属性需要更多的工作。
如果需要字符属性MQCA_Q_NAME和MQCA_Q_DESC,则将这两个属性的长度(分别为48和64个字符)加起来设置CharAttrLength中的值(112)。
不必知道这其中每个字段的长度,因为长度也具有符号名称。
在刚才所举的例子中,CharAttrLength的值可通过将MQ_Q_NAME_LENGTH和MQ_Q_DESC_LENGTH相加来获得。
当然,您必须确保拥有能够容纳预期会返回的最长字符串的缓冲区。
响应将确切按照请求的顺序返回。
假设Selectors为:
MQIA_CURRENT_DEPTH
MQCA_Q_NAME
MQIA_MAX_Q_DEPTH
MQCA_Q_DESC
为字符属性设置了一个至少112个字符的缓冲区,为整数属性设置了一个数组。
程序在IntAttrCount中提供值2,在CharAttrLength中提供值112。
在从调用返回时,整数数组中第一个位置中的值将是当前深度(MQIA_CURRENT_Q_DEPTH),随后跟着是最大深度(MQIA_MAX_Q_DEPTH)。
字符串缓冲区将在前48个字符中包含队列名称(MQCA_Q_NAME),随后紧跟着是64个字符的队列描述(MQCA_Q_DESC)。
程序将需要把该字符串划分为各个部分。
MQINQ伪代码
清单1显示了MQINQ调用的伪代码。
为简化代码和集中于MQINQ,常规事务调用已省去了。
清单1.MQINQ示例
DEFINECONN_HANDLEASMQHCONNDEFINEOBJ_HANDLEASMQHOBJDEFINECOMP_CODEASMQLONGDEFINEREASON_CODEASMQLONGDEFINESELECTORSASARRAY5MQLONGDEFINESELECTOR_COUNTASMQLONGDEFINEINT_COUNTASMQLONGDEFINEINTSASARRAY3MQLONGDEFINECHAR_COUNTASMQLONGDEFINECHARSASCHAR2000CALLMQCONN(....)CALLMQOPEN(....)SELECTOR_COUNT=4SELECTORS
(1)=MQCA_BACKOUT_REQ_Q_NAMESELECTORS
(2)=MQIA_BACKOUT_THRESHOLDSELECTORS(3)=MQCA_CREATION_DATESELECTORS(4)=MQIA_INHIBIT_GETINT_COUNT=2CHAR_COUNT=MQ_Q_NAME_LENGTH+MQ_CREATION_DATE_LENGTHMQINQ(CONN_HANDLE,OBJ_HANDLE,SELECTOR_COUNT,SELECTORS,INT_COUNT,INTS,CHAR_COUNT,CHARS,COMP_CODE,REASON_CODE)
SELECTORS被定义为一个具有5个条目的数组,SELECTOR_COUNT是一个4字节的字段,其中将包含SELECTORS的数量。
INT_COUNT将包含属于整数的SELECTORS数量,INTS是将返回整数值的数组。
名为CHAR_COUNT的字段将包含要返回的所有字符属性的总长度,CHARS是缓冲区,其中将返回由所有那些字符属性构成的字符串。
假设MQOPEN包括MQOO_INQUIRE选项。
此MQINQ将请求四个选择器。
四个所需属性放在SELECTOR数组中。
INT_COUNT设置为2,字符属性长度加起来确定CHAR_COUNT。
最后是执行该MQINQ调用。
如果调用成功,应用程序就可以从INTS和CHARS检索所请求的信息。
MQSET
MQSET调用的语法如下:
MQSET(Hconn,Hobj,SelectorCount,Selectors,IntAttrCount,IntAttrs,CharAttrLength,
CharAttrs,CompCode,Reason)
可以看到,参数在类型和顺序方面与MQINQ完全相同。
不同之处在于某些数据的流向。
MQINQ上的输出字段(IntAttrs和CharAttrs)成了MQSET上的输入字段。
一个更重要的区别在于,除了队列以外,不允许对任何其他对象执行MQSET。
而且,只能更改属性的一个很小子集。
指示是否允许PUT的属性(MQIA_INHIBIT_PUT)对所有队列类型都是可设置的。
只能对本地和别名队列设置MQIA_GET_INHIBITED属性。
还允许对本地队列设置与触发关联的以下属性:
MQCA_TRIGGER_DATA
MQIA_TRIGGER_CONTROL
MQIA_TRIGGER_DEPTH
MQIA_TRIGGER_MSG_PRIORITY
MQIA_TRIGGER_TYPE
还允许对那些支持分发列表的平台设置MQIA_DIST_LISTS。
队列必须使用MQOO_SET选项来打开。
如果未能设置任何属性(也许是由于所请求的属性之一不允许MQSET),则不会设置任何一个请求的属性,并且调用会失败。
如果调用成功,则更改会立即生效。
MQSET伪代码
清单2显示了MQSET调用的伪代码。
为简化代码和集中于MQSET,常规事务调用已省去了。
清单2.MQSET示例
DEFINECONN_HANDLEASMQHCONNDEFINEOBJ_HANDLEASMQHOBJDEFINECOMP_CODEASMQLONGDEFINEREASON_CODEASMQLONGDEFINESELECTORSASARRAY5MQLONGDEFINESELECTOR_COUNTASMQLONGDEFINEINT_COUNTASMQLONGDEFINEINTSASARRAY3MQLONGDEFINECHAR_COUNTASMQLONGDEFINECHARSASCHAR2000CALLMQCONN(....)CALLMQOPEN(....)SELECTOR_COUNT=2SELECTORS
(1)=MQIA_TRIGGER_TYPESELECTORS
(2)=MQIA_TRIGGER_DEPTHINTS
(1)=MQTT_DEPTHINTS
(2)=10INT_COUNT=2CHAR_COUNT=0MQINQ(CONN_HANDLE,OBJ_HANDLE,SELECTOR_COUNT,SELECTORS,INT_COUNT,INTS,CHAR_COUNT,CHARS,COMP_CODE,REASON_CODE)
定义各个字段的代码与MQINQ完全相同。
该调用旨在更改队列的触发器类型,以允许使用关于深度(MQIA_TRIGGER_TYPE)的触发器。
既然关于深度的触发暗示的不是1(即MQTT_FIRST),因此必须在队列的MQIA_TRIGGER_DEPTH属性中指定导致触发所需的消息数量(在此例中为10)。
在所设置的选择器中,两个都是整数,因此将INT_COUNT设置为2,将CHAR_COUNT设置为0。
最后是使用已设置的参数来发出MQSET调用。
13编辑]
在这里,您可以IBM软件产品下载、Demo下载、试用版下载、红皮书下载、白皮书下载
帖子141积分1311金钱1000W币注册时间2008-7-7个人空间发短消息加为好友当前离线3#大中小发表于2008-7-718:
06只看该作者
处理队列属性示例代码
在本部分,您将查看并运行一个查询和设置队列属性的示例代码。
下载示例代码
将包含示例代码和配置文件的.zip文件(samples.zip)samples.zip(12.51KB)samples.zip(12.51KB)
下载次数:
2
2008-8-2716:
04下载到您的系统上。
将该文件的内容提取到系统上的某个文件夹中。
提取之后,您将拥有三个文件:
MQAdditional.zip、setup04.txt和setup05.txt。
将两个设置文件复制到您的用户目录,即打开命令提示符时的缺省目录。
通常,该目录为\DocumentsandSettings\Administratoror\DocumentsandSettings\<
your_user_name>
。
导入示例代码
从“开始”菜单中启动ApplicationDeveloper。
在提示选择工作区时接受缺省工作区,然后单击OK。
从主菜单中,单击Window>
OpenPerspective>
Java。
从主菜单中选择File>
Import...。
选择ProjectInterchange,然后单击Next。
单击Fromzipfile:
字段旁边的Browse...,导航到您解压缩下载的示例代码的文件夹,选择MQAdditional.zip。
单击Open。
选择SelectAll,然后单击Finish。
在PackageExplorer视图中展开MQAdditional,再展开com.ibm.cert996以显示代码示例类。
双击MQInq.java。
双击MQSet.java。
检查示例代码
实际上您将运行四个程序来检查MQINQ和MQSET功能。
这里将讨论其中两个,即MQInq.java和MQSet.java。
另外两个程序,即PutToRequest.java和MQUnset.java,是辅助本练习的实用程序,因此这里就不再讨论它们了。
然而,建议您大致看一下它们,并了解它们是如何工作的。
MQInq.java
在对MQInq.java的讨论中,我们将分成很小的部分来逐一查看该代码,并解释每个部分所做的工作。
让我们首先看一下类声明,以及已声明的一些常量和main()方法,如清单3所示。
清单3.MQInq.java类声明
publicclassMQInq{privatestaticfinalStringqManager="
QMC1"
;
privatestaticfinalStringqName="
CERT.REQUEST"
publicstaticvoidmain(Stringargs[]){newMQInq().run();
}
此代码定义了两个常量字符串来指定队列管理器和队列。
main()方法不过就是创建该类的实例,并调用其run()方法。
run()方法是该类中唯一的其他方法,我们将在此检查过程的其余部分研究它。
清单4显示了run()方法的前几行。
Listing4.run()方法的开头
publicvoidrun(){System.out.println("
StartMQInq"
);
try{MQQueueManagerqMgr=newMQQueueManager(qManager);
intopenOptions=MQC.MQOO_INQUIRE+MQC.MQOO_FAIL_IF_QUIESCING;
MQQueuequeue=qMgr.accessQueue(qName,openOptions);
System.out.println("
Inquiringonattributesofqueue:
"
+queue.name);
此代码首先向控制台打印一条指示MQInq已启动的消息,建立到队列管理器的连接,并打开队列以便查询。
然后打印一条包含队列名称的消息。
清单5显示了如何“查询”和显示队列的队列类型。
清单5.查询队列类型
intqueueTypeValue=queue.getQueueType();
StringqueueTypeName="
Unknown"
switch(queueTypeValue){caseMQC.MQQT_ALIAS:
queueTypeName="
Alias"
break;
caseMQC.MQQT_LOCAL:
Local"
caseMQC.MQQT_MODEL:
Model"
caseMQC.MQQT_REMOTE:
Remote"
default:
}System.out.println("
Queuetype:
+queueTypeName);
如果您认为清单5看起来与MQINQ不像,您是对的。
在WebSphereMQbaseJava类中,有多个队列特性(attribute)被定义为队列对象的属性(property)。
这不过就是调用一个get<
AttributeName>
()方法来检索那些特性的问题。
队列类型是属于队列对象属性的那些特性之一。
还有其他几个队列属性,如清单6所示。
清单6.其他队列属性
intmaximumDepth=queue.getMaximumDepth();
System.out.println("
Maximumdepth:
+maximumDepth);
intcurrentDepth=queue.getCurrentDepth();
Currentdepth:
+currentDepth);
intmaximumMsgLength=queue.getMaximumMessageLength();
Maximummessagelength:
+maximumMsgLength);
intinhibitGetValue=queue.getInhibitGet();
StringinhibitGetName="
switch(inhibitGetValue){
caseMQC.MQQA_GET_INHIBITED:
inhibitGetName="
Inhibited"
caseMQC.MQQA_GET_ALLOWED:
Allowed"
default:
}
Get:
+inhibitGetName);
intinhibitPutValue=queue.getInhibitGet();
StringinhibitPutName="
switch(inhibitPutValue){
caseMQC.MQQA_PUT_INHIBITED:
inhibitPutName="
caseMQC.MQQA_PUT_ALLOWED:
ut:
+inhibitPutName);
[本帖最后由艾依然于2008-8-2716:
04编辑]
帖子141积分1311金钱1000W币注册时间2008-7-7个人空间发短消息加为好友当前离线4#大中小发表于2008-7-718:
24只看该作者
可以看到,对于这些属性,检索它们的值要比设置整数和字符计数及数组容易得多。
然而,并非所有队列特性都可用作属性。
对于那些不可用作属性的队列特性,WebSphereMQbaseJava类提供了看起来应该像熟悉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五MQ其他 MQI 主题 MQ 其他