MQ Misc

8
IBM Software Group © 2004 IBM Corporation MQ Misc

description

MQ Misc. 设计消息. 消息类型 在应用程序中的消息是一个简单消息,还是一个请求消息。如果是请求消息,请求 - 回复的处理方式是异步还是同步。还有就是所有的消息是否在同一个工作单元。 消息优先级 在发送应用程序中可以为每个消息设置优先级再放到队列中。如果队列的消息交付方式也设置为优先级方式,则接收程序将总是先取出优先级最高的消息。如果队列的消息交付方式也设置为先进先出方式,则接收程序将按先进先出方式取出队列中的消息。 消息的永久性 当队列管理器重新启动,是否希望保留队列中的消息,如果需要保留,则把消息设置成永久性的,如果不需要保留,则把消息设置成非永久性的。. - PowerPoint PPT Presentation

Transcript of MQ Misc

Page 1: MQ Misc

IBM Software Group

© 2004 IBM Corporation

MQ Misc

Page 2: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation2

设计消息

消息类型在应用程序中的消息是一个简单消息,还是一个请求消息。如果是请求消息,请求 -回复的处理方式是异步还是同步。还有就是所有的消息是否在同一个工作单元。

消息优先级在发送应用程序中可以为每个消息设置优先级再放到队列中。如果队列的消息交付方式也设置为优先级方式,则接收程序将总是先取出优先级最高的消息。如果队列的消息交付方式也设置为先进先出方式,则接收程序将按先进先出方式取出队列中的消息。

消息的永久性当队列管理器重新启动,是否希望保留队列中的消息,如果需要保留,则把消息设置成永久性的,如果不需要保留,则把消息设置成非永久性的。

Page 3: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation3

WebSphere MQ 应用技术

等待消息可以采用轮循机制从队列中取出消息或设置等待消息时间,如果消息到达则取出,否则超时则返回。

关联回复把请求消息中的消息标识( MsgId)复制到回复消息的关联标识( CorrelID)中。

上下文信息( Context information)上下文信息对于安全,审计和问题确定是很有用。

自动启动WebSphere MQ应用程序WebSphere MQ触发机制,当消息到达队列时,自动启动应用程序处理消息。

产生消息报告在应用程序可以请求产生多种报告消息,例如,意外报告( Exception reports)、失效报告 (Expiry reports)、到达确认报告 (Confirm-on-arrival reports)、交付确认报告 (Confirm-on-delivery reports) 、 PAN报告( Positive action notification reports)和 NAN报告 (Negative action notification reports)等。

群集和消息的紧密联系在 WebSphere MQ群集里,消息可以被放到群集中任何队列管理器的相应队列,因此消息间的紧密联系可能被变得松散。

Page 4: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation4

性能考虑

当处理一批消息时,可以采用 MQCMIT函数,将若干消息作为一个完整的交易来处理,消息将作为一个 batch统一提交,而不是一个个地分别提交,因此,可以提高性能。尤其对于永久性的消息效果更加明显。

尽量减小消息的大小,小消息的读取效率要高。对于 mqget, mqput这两个函数而言, 8k以下的消息的耗时差别不大, 8k 到 128k的消息的耗时随着消息大小的增加而增加。大于 128k的消息耗时较大,因为当与队列相关的内存满了的时候,会有硬盘交换。

同时要注意,从传输效率而言,如果在广域网上进行消息传输,消息太小会影响传输效率,因为对于每一消息, MQ都会有一个消息头,它会占有一定的字节数,如果把消息拆分太小,每个消息的传输头都会占据一定的开销。

如果消息不必可恢复,则在应用程序中可使用非永久性消息。 使用 Distribution List 方式来把相同的消息发往不同的目的地。 用 match correlation ID的方法取消息比不匹配性能要差。 通常,我们使用MQCONN这个函数建立与队列管理器的连接,除此之外,MQ支持 trusted application binding,即 fastpath binding,用MQCONNX来实现。当从性能方面考虑时,我们可以使用 MQCONNX来提高性能。

Page 5: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation5

MQI 的数据结构

MQBO (开始选项)为 MQBEGIN 调用确定选择项(仅适用于WebSphere MQ 版本 5 产品)。

MQCNO (连接选项)为 MQCONNX 调用确定选择项(仅适用于WebSphere MQ 版本 5 产品)。

MQDH (分配标题)如果传输队列中的一条消息是分布列表消息,则描述该消息所包含的数据(仅适用于WebSphere MQ 版本 5 产品和WebSphere MQ for AS/400)。

MQGMO(获取消息选项)为 MQGET 调用确定选择项。

MQMD(消息描述器)为放入队列的(使用MQPUT 或 MQPUT1)或从队列中获取的(使用

MQGET)消息提供控制信息。

Page 6: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation6

MQI 的数据结构

MQMDE (消息描述器扩展)与 MQMD 版本 1 结合,它包含MQMD 版本 2 通常采用的分组消息和分段信息(仅适用于WebSphere MQ 版本 5 产品和WebSphere MQ for AS/400)。

MQOD(对象描述器)确定采用MQOPEN 时要处理的对象。

MQOR(对象记录)确定您在分布列表中要处理的目标(仅适用于WebSphere MQ 版本 5 产品和WebSphere MQfor AS/400 V4R2)。

MQPMO(放置消息选项)确定MQPUT 和 MQPUT1 调用的选择项。

MQPMR(放置消息记录)包含相关分布列表中个别目标的特定信息(仅适用于WebSphere MQ 版本

5 产品和WebSphere MQ for AS/400 V4R2)。

Page 7: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation7

其它结构

MQDLH(死信标题)定义放入死信(未送达的消息)队列中消息标题的格式(WebSphere MQ for Windows V2.0不支持)。

MQRMH (引用消息标题)定义引用消息的格式(仅适用于WebSphere MQ 版本 5 产品和WebSphere MQ for AS/400)。

MQTM(触发器消息)定义触发器消息格式。

MQTMC (触发器消息)定义作为一组字符字段的触发器消息的格式(仅适用于WebSphere MQ for AS/400)

MQTMC2 (触发器消息)定义包括队列管理器名的触发器消息的格式(仅适用于WebSphere MQ for

MVS/ESA , WebSphere MQ on UNIX systems , WebSphere MQ for OS/2 Warp 和WebSphere MQ for Windows NT)

MQXP(出口参数块)结构用来与 API 交叉出口进行通讯(仅适用于WebSphere MQ for MVS/ESA)。

MQXQH(传输队列标题)定义放入传输队列中的添加至消息的标题格式。

Page 8: MQ Misc

IBM Software Group | WebSphere software

© 2004 IBM Corporation8

C 和 Visual Basic的基本数据类型

MQBYTE 单字节数据 MQBYTEn 16 、 24 、 32 或 64 字节的字符串 MQCHAR 单字节字符 MQCHARn 包含

4 , 8 , 12 , 16 , 20 , 28 , 32 , 48 , 64 , 128 或 256 个单字节字符的字符串

MQHCONN 连接句柄(此数据为 32 位) MQHOBJ 对象句柄(此数据为 32 位) MQLONG 32 位带符号二进制整数 PMQLONG 指向MQLONG 类型数据的指针