免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6914 | 回复: 18
打印 上一主题 下一主题

MQSeries 入门手册 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-31 22:11 |只看该作者 |倒序浏览
介绍
MQSeries 是一个通信系统,它在各种广泛的硬件和软件平台之间提供确保的、异步的、一次性数据发送。

这些特性使得 MQSeries 成为应用程序间通信的理想基础结构,并成为一个正确的解决方案,不论这些应用程序是在同一台机器上运行还是在由一个或多个网络分隔的不同机器上运行。

MQSeries 支持所有重要的通信协议,另外还提供在使用不同协议的网络之间的路由。仅需很少的编程或不需要编程,MQSeries 网桥和网关产品就能允许便捷地访问许多现有的系统和应用程序环境,例如 Lotus Notes、Web 浏览器、Java 小应用程序和许多其它产品。

确保的传递能力反映为许多在 MQSeries 中内建的功能可以确保不会因为基本系统或网络结构故障而丢失数据。确保的传递能力使得 MQSeries 形成了关键通信系统的主干,并被受托传递重要数据。在某些适当的场合也可提供您选择健壮性稍低的服务质量。例如,可能在一些环境中,您会需要更快速的传递,而对可信传递方面强调较少。

MQSeries 中的异步处理支持是指在发送和接收应用程序之间的数据交换是与时间无关的。这允许发送和接收应用程序相互分离,这样发送方就可以继续处理,而不需要等待接收方确认其已接收到数据。实际上,在发送数据时目标应用程序甚至不需要运行。同样,在传送数据时,可以不使用发送方和接收方之间的网络路径。

一次性传递数据是一个重要的考虑因素,特别是在金融和商业应用程序中,您肯定不希望从一个帐户中移动大量钱款至另一帐户的请求重复发生。

论坛徽章:
0
2 [报告]
发表于 2003-05-31 22:12 |只看该作者

MQSeries 入门手册

消息、队列和队列管理器
在 MQSeries 中需要理解的三个基本概念是:

消息
队列
队列管理器

消息
  
消息就是对使用它的应用程序有意义的字节串。消息是用来从一个应用程序传送数据至另一个应用程序(或相同应用程序中的不同部分)。应用程序可以在同一个平台或不同的平台上运行。   

MQSeries 消息有两部分;应用程序数据和消息描述符。应用程序数据的内容和结构由使用数据的应用程序来定义。消息描述符标识了该消息,并包含其它控制信息,如消息类型以及由发送应用程序为消息指定的优先级。


队列
  
队列是存储消息的数据结构。由应用程序或队列管理器将消息放入队列或从队列中取出,是它的一些常规操作。

队列对于使用它们的应用程序来说是独立存在的。队列可存在于主存储器(如果它是临时的),磁盘或相似的辅助存储器(如果必须保留以备恢复的话),或同时在这两处(如果它正在使用,且必须保留以备恢复)。每个队列都属于一个队列管理器,它负责维护队列。队列管理器将接收到的消息放入合适的队列中。

队列可以在本地系统上存在,这种情况下它们称为本地队列,也可以在另一个队列管理器上存在,这种情况下它们称为远程队列。

应用程序发送消息至队列,或从队列中接收消息。例如,一个应用程序可以将消息放入队列,而另一个应用程序可以从相同队列中取出消息。   

每个队列都有一些队列属性,它们确定了在应用程序引用队列时将执行的操作。属性表明:

应用程序是否可以从队列中检索消息(允许取出)。
应用程序是否可以将消息放入队列中(允许放入)。
访问队列是由一个应用程序独占还是在应用程序间共享的。
可同时在队列上存储的最大消息数(最大队列深度)。
可放入队列的消息的最大大小(最大消息大小)。

队列管理器
  
队列管理器为应用程序提供了排队服务,并管理属于它的队列。它确保:

根据接收到的细节更改对象属性。
当发生特殊情况时,产生特殊事件(例如设备事件或触发器事件)。
按照应用程序的请求将消息放入正确队列。如果不能完成,则将通知应用程序并给出适当的原因码。
        
每个队列都属于一个单一队列管理器,对于那个队列管理器来说它是本地队列。与应用程序连接的队列管理器被认为是该应用程序的本地队列管理器。对于该应用程序,属于本地管理器的队列是本地队列。 远程队列是属于另一个队列管理器的队列。远程队列管理器是非本地队列管理器的任何其它队列管理器。远程队列管理器可存在于网上的一个远程机器上,或者存在于与本地队列管理器相同的机器上。MQSeries 支持同一台机器上的多个队列管理器。

论坛徽章:
0
3 [报告]
发表于 2003-05-31 22:13 |只看该作者

MQSeries 入门手册

MQSeries 配置
  
最简单的配置是 MQSeries 安装在一台机器上并创建了一个队列管理器。该队列管理器允许定义队列。这样本地应用程序就可以使用这些队列交换消息。

通过应用程序与另一个队列管理器管理的队列之间进行通信需要定义消息通道。不需要定义直接到目标队列管理器的通道,适当的做法通常是仅定义下一个转接点(即中间队列管理器)。对该队列管理器可用的消息通道将被用于传递消息至目标队列管理器(或至下一个转接点)。

使用客户机/服务器结构可以创建更复杂的配置。MQSeries 产品可以作为与 MQSeries 客户机连接的 MQSeries 服务器使用。客户机和服务器不需要在相同平台上。MQSeries 支持广泛的各种客户机平台。MQSeries 产品通常会包含各种平台的客户机。附加的 MQSeries 客户机可从 MQSeries Web 站点获得。

在客户机/服务器配置中,MQSeries 服务器为客户机以及所有本地应用程序提供消息传递和排队服务。客户机通过客户机的专用通道(也叫做客户机通道)连接到服务器。这是一个符合成本效益的部署方法,因为仅使用一个 MQSeries 服务器产品副本,服务器就可支持几百个客户机。但是无论何时运行客户机上的 MQSeries 应用程序,客户机通道都必须持续可用。这与某些消息通道不需要持续可用就可支持在服务器上运行的 MQSeries 应用程序相反。

有关详细信息,请参阅通道。

MQSeries 还支持群集概念以简化设置和操作。群集是一个命名的队列管理器集合,并且任何一个队列管理器都可以不属于群集、或属于一个或多个这样的群集。群集中的队列管理器可以存在于相同或不同机器上。   

如果没有已定义的队列管理器,由 MQSeries Windows NT 和 Windows 2000 版安装进程提供的缺省配置可以配置一个队列管理器加入到本地缺省群集中。队列管理器的名称是基于机器的 TCP/IP 域。

使用群集有两个主要的好处:

在一个群集中的成员之间进行通信是非常简单的,特别是因为交换消息所需的通道是根据需要自动定义和创建的。
参与队列管理器中的一些或全部队列可被定义为群集队列,这样可以使得它们自动被群集中的所有其它队列管理器知晓并使用。
有关详细信息,请参阅群集。


通道
通道为队列管理器提供了通信路径。有两种类型的通道:消息通道和 MQI 通道。     

消息通道提供了在相同平台或不同平台上两个队列管理器之间的通信路径。消息通道是用于从一个队列管理器至另一个队列管理器发送消息,同时使得应用程序避免了基本网络协议的复杂性。消息通道只可单向发送消息。如果在两个队列管理器间需要双向通信,则需要两个消息通道。      

客户机通道(也称为 MQI 通道)将 MQSeries 客户机连接到服务器机器上的队列管理器,并且是双向的。

如果要阅读有关通道的更多信息,以及 MQSeries 如何使用它们在网络中跨越各种系统进行通信,请参阅 MQSeries Intercommunication一书。


客户机和服务器
      
MQSeries 支持 MQSeries 应用程序的客户机/服务器配置。

MQSeries 客户机是 MQSeries 产品的一部分,它安装在机器上,接受来自应用程序的 MQSeries 调用并将它们传递给 MQSeries 服务器 机器。在那里它们由队列管理器处理。典型地,客户机和服务器驻留在不同机器上,但它们可以同处在一台机器上。

MQSeries 服务器是为一个或多个客户机提供排队服务的队列管理器。所有 MQSeries 对象(例如队列)都仅存在于队列管理器机器上(即 MQSeries 服务器机器上)。服务器也可以支持本地 MQSeries 应用程序。

MQSeries 服务器与普通的队列管理器之间的差别在于 MQSeries 服务器可支持 MQSeries 客户机,并且每个 MQSeries 客户机应用程序与 MQSeries 服务器之间都有一个专用的通信链路。

有关客户机支持的更多信息,请参阅 MQSeries 客户机一书。


群集
  
群集是一个命名的队列管理器集合。

群集需要群集内的至少一个队列管理器被定义为资源库 (即存放共享群集信息的地方)。更典型的做法是,通常指定两个或更多个资源库以提供在系统出现故障时的持续可用性。MQSeries 确保资源库中的信息保持同步。

当队列被定义为群集队列时,它可被认为是公用队列,可被群集中的其它队列管理器自由使用。这与非群集队列不同,非群集队列仅当它们的本地定义可用时,才可访问。因此,非群集队列具有专用队列的特性,仅可由那些已经配置为知道它们的队列管理器来访问。

在相同群集中具有相同名称的公用队列被认为是等价的。如果消息被发送至该队列名称,MQSeries(缺省情况下)将使用一个负载均衡算法将它发送到其中的任何一个。如果您不希望发生这一情况,可以在地址中使用队列管理器和队列名称,这就迫使消息被发送到特定的队列管理器。或者,可使用另一种实现方法来替换负载均衡例程。这就是典型的 MQSeries 行为,其中有许多示例表明标准行为可以更改,方法是在为该目的设计的出口中实现用户代码。

论坛徽章:
0
4 [报告]
发表于 2003-05-31 22:13 |只看该作者

MQSeries 入门手册

MQSeries 能力
  
MQSeries 可用来创建许多不同类型的解决方案。其中一些采用了平台支持或网桥和网关能力,用一种集成方法连接至现存的系统,或允许新建应用程序从现存的系统中抽取信息,或与现存系统交换信息。其它一些解决方案支持商业应用程序服务器,在其上 MQSeries 应用程序的中央池可以跨网络管理发送的工作。可以支持工作流方案的复杂的信息路由选择。 “发布/订阅”或“发送即忘”是使用不同消息流的其它应用程序方案。可以使用 MQSeries 的能力和灵活性建立负载均衡和热备用系统,MQSeries 包括了许多支持这些不同方案的特定功能。

请参阅 MQSeries 应用程序设计指南获得有关编写 MQSeries 应用程序的更多信息。


事务性支持
  
应用程序可能需要将一组更新组合成一个工作单元。这些更新通常是逻辑相关的,并且都必须成功以保持数据完整性。如果在组中的一个更新成功而另一个失败,那么数据完整性可能会丢失。MQSeries 支持事务性的消息传递。

工作单元成功完成后就提交。此时,所有在工作单元内所做的更新都将变成永久的并且是不可逆的。或者,如果工作单元失败了,所有更新都被逆序恢复。同步点协调是工作单元用来提交或逆序恢复完整性的进程。

本地工作单元上唯一更新的那些资源是 MQSeries 队列管理器的资源。这里同步点协调是由队列管理器自身使用单阶段提交进程提供的。

全局工作单元上属于其它资源管理器的资源,例如符合 XA 的数据库,也同时被更新。这里,必须使用两阶段提交过程,并且工作单元可由队列管理器自身协调,或由其它符合 XA 的事务管理器(例如 IBM CICS、IBM Transaction Server、IBM TXSeries、Transarc Encina 或 BEA Tuxedo)外部协调。

当队列管理器自己协调全局工作单元时,就有可能在 MQSeries 工作单元内集成数据库更新。就是说,可以编写混合的 MQSeries 和 SQL 应用程序,并且可以使用命令来一起提交或逆序恢复对队列和数据库的更改。

队列管理器使用两阶段提交协议来完成它。当实施一个工作单元时,队列管理器将首先询问每个参与的数据库管理器是否准备提交更新。只有当所有的参与者,包括队列管理器自己,都准备提交时,所有队列和数据库更新才提交。如果任何参与者不能准备它的更新时,则逆序恢复工作单元来代替提交工作单元。

如果队列管理器在提交协议期间失去与任何数据库管理器的联系,则将提供完全恢复支持。如果数据库管理器因处于未确定状态而变为不可用(就是说,已调用它作准备,但还要接收提交或逆序恢复决定),则队列管理器将记住工作单元的结果,直到它被成功传递为止。同样地,如果队列管理器终止时有未完成的提交操作,那么队列管理器重新启动时它们将被记住。


设备事件
可以使用 MQSeries 设备事件来监控队列管理器的操作。     

设备事件可以在队列管理器检测到一组预定义的情况发生时生成称为事件消息的特殊消息。例如,在以下情况时将生成队列满事件消息:对于指定队列启用了“队列满”事件;应用程序发出 MQPUT 调用在队列中放入消息;并且由于队列已满引起调用失败。

其它条件也可以引起设备事件,包括:

达到队列中消息数的预定义极限
在指定时间内队列没获得服务
启动或停止的通道实例

   

如果将事件队列定义为远程队列,则可将所有事件队列放入单个队列管理器中(对于那些支持设备事件的节点)。然后,可以从单个节点使用生成的事件监控队列管理器的网络。   

MQSeries 设备事件分为下列几种:


队列管理器事件   
这些事件与队列管理器中的资源定义有关。例如,如果应用程序尝试打开队列,但关联的用户标识没有经过授权执行该操作,将生成队列管理器事件。

性能事件   
这些是在资源达到阈值条件时将产生的通知。例如,达到队列深度极限,或者按照 MQGET 请求,在预先定义的时间内未对队列进行服务。可以使用 Windows NT 性能监控器来检查和控制队列的某些方面(例如,队列深度、队列深度百分率、以及有多少消息已经入队和出队)。

通道事件     
这些事件是由通道报告的,作为操作期间检测条件的结果。例如,在通道实例停止时产生一个通道事件。

消息驱动处理
   
当消息到达队列后,它们可以使用一种称为触发的机制来自动启动应用程序。如果必要的话,应用程序可在处理完消息后停止。

论坛徽章:
0
5 [报告]
发表于 2003-05-31 22:17 |只看该作者

MQSeries 入门手册

翻到从前的一些文档,贴在这里,也不知有人看吗?
最好是能在有个tuxedo专题,cics专题。
偶想这些东西用的人很多呀,应该比8583之类的话题有人气呀!

论坛徽章:
0
6 [报告]
发表于 2003-06-01 15:26 |只看该作者

MQSeries 入门手册

以前这里都是讨论中间件的高手

但是后来论坛换成新的时速度慢了好长时间
人气下去了

我对这也不是很懂
所以只贴贴软件工程方面的资料

hb317   兄如果对这了解很多的话可以多贴这方面的资料
我也尽量学并整理一些这方面的资料到论坛中来

使用中间件的人很多
如果这里的资料多了
会吸引更多的人来讨论的

论坛徽章:
0
7 [报告]
发表于 2003-06-02 13:35 |只看该作者

MQSeries 入门手册

我也研究过一段时间MQ,希望能和大家多交流!

论坛徽章:
0
8 [报告]
发表于 2003-06-02 15:08 |只看该作者

MQSeries 入门手册

hb317
     我刚开始学习使用MQ,现有个问题能否给予回答
     如何在传输消息时将几个消息定义为一组。问这个问题是因为我要用mq来传送文件,在接受端要将文件合并,如果有一个没传送到,文件将无法合并。


先谢了

论坛徽章:
0
9 [报告]
发表于 2003-06-02 17:09 |只看该作者

MQSeries 入门手册

原帖由 "jngn76" 发表:
hb317
     我刚开始学习使用MQ,现有个问题能否给予回答
     如何在传输消息时将几个消息定义为一组。问这个问题是因为我要用mq来传送文件,在接受端要将文件合并,如果有一个没传送到,文件将无法合并。


..........
   
文将的拆分和合并都是自动来完成的!

论坛徽章:
0
10 [报告]
发表于 2003-06-02 18:42 |只看该作者

MQSeries 入门手册

大家多发点中间件的资料过来
一起把这个论坛做成专业的中间件论坛

当然论坛中还是会有其它讨论主题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP