Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179009
  • 博文数量: 7
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 276
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-28 16:54
文章分类

全部博文(7)

文章存档

2013年(1)

2012年(3)

2011年(1)

2010年(1)

2008年(1)

我的朋友

分类:

2010-05-08 20:12:55

首先介绍一些非常有用的资料
甘荃老师的视频教程::
csdn上mq的基础教程:download.csdn.net/source/503881
可以上IBM官网直接下载IBM mq的90天trail版本。速度很快。7.0 for wins 是582M.
reference:1.
强烈推荐2.www.lifeng.name/document/manual/mqm/

 

那首先我也是个初学者 就把感觉比较有用的知识点总结下(按照mq基础教程的思路):
首先是中间件的概念
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分和不同的应用,能够达到资源共享功能共享的目的。

那根据一般的例子还有朋友之间的交流,mq更多的使用与多平台中间的交互作用。用消息的模式。而不同的硬件OS之间也可以通过MQ来走消息。

MQ的传输消息模式。 因为一般来说两个平台或者程序之间通信的花不外乎三种模式:
Conversational  对话模式   CPI-C(common program interface for communication) 基本上就是在两端需要有软件从始至终保持连接状态,完全的同步。
Call&Return  呼叫回复 RPC(Remote Procedure Communication) 调用和被调用 一样是同步
Messaging    消息  MQI(message q interface) 双方异步 通过管道 put进去不再管 get 归另一边管。

四大部件:

消息:消息就是一个信息单元,这个信息单元可以是一个请求(Request message),也可以是一个应答(Reply message),或者是一个报告(Report message)或一份报文(Datagram   messge)。一个消息包含两个因素——消息描述(用于定义诸如消息传输目标等)和数据消息(如应用程序数据或数据库查询等)。程序之间的通信通过传递消息而非直接调用程序。
这样四种模式的消息也就全部都介绍了。

队列:一个安全的存储消息的地方,消息的存储一般是顺序的,队列是消息分阶段地传送和接收。因为消息存放在队列中,所以应用程序可以相互独立的运行,以不同的速度,在不同的时间,在不同的地点。
队列的目的性不同,也包含多种队列,可以细分,不过以后再说,先要大力轮廓描清楚。

消息传输系统:用于确保队列之间的消息提供,包括网络中不同系统上的远程队列之间的消息提供。并保证网络故障或关闭后的恢复。
这个就是不同系统间的联系环节了。

应用程序接口:应用程序和消息系统之间通过Websphere MQ API实现的接口Websphere MQ API在所有Websphere MQ平台上是一致的。API只有14个调用,2个关键动词:发送(PUT)和接收(GET)。
这个就是一些程序中调用MQ API 来进行队列的操作,基本上就是两件事,放消息和取消息,或者读(browser),因为取了以后消息就没啦。

围绕这四大部件会有很多细节需要描述,但基本上到处都有讲解,我也不浪费篇幅,找点最最基本的来说。
MQ的所有的管控的指令从他们作用的区域来说可以单纯的分为三种:
1)Control Commands 如果你安装了mq, 那么在\bin下你会发现很多的可执行文件,这些就是了。
最有用的莫过于 crtmqm, strmqm,runmqsc
2) MQSC Commands 这个就是MQseries Command, 甚至有人给它写了书,很好很强大,但仔细看看的话基本上大同小异,很容易看明白,但是由于太过于细化,如果背过的话很难,但基本上根据字面意义都可以猜出来其对称意义。
3)PCF Commands Programmable Command Formats
这个就是写在程序里边了可以通过MQSC去加载执行并生成指定的queue,现在我也没有细研究。大概看了下是这个意思。以后会细搞。

在说这些command之前,我觉得有必要用我个人的理解来分析下mq的一些环节部件之间的关系。以便串联。
首先mq是个中间件用于不同平台之间传递消息,举个简单例子可能客户端是windows, 服务器段是AIX,通过一定的编码解码格式,mq可以从AIX mq get客户放到windows mq上的消息。这是用途距离。
那存放这个消息的东西就是queue,队列,这个队列在这个case里边是windows上的远程队列。而AIX上则有个队列和这个队列相对应。 而连接这两个队列的东西就是通道也就是Channel。因为一个客户端可能要连接其他服务器所以也会有其他的队列和通道,为了管理这些通道和队列,需要一个管理器,也就是message queue manager, mqm, 那对管理器我们进行操作就需要一些指令,而这些指令包括以上三种形式。

还有一点要说的是一般来说mq部分的操作就在mq上发生,至于客户端怎么连接mq是另一个环节,即使通过一些api进行了mq方面的测试,这两个部分还是相对独立的。而当消息放到mq上以后,就不再归客户端所管,而是由mq定制的方向发走。

Control commands 比较有用的有 (只看指令,后边的arguments只是实例)
建立mqm
crtmqm -q -d MY.DEFAULT.XMIT.QUEUE -u SYSTEM.DEAD.LETTER.QUEUE  SATURN.QUEUE.MANAGER
-q是指定这个队列为默认队列 -d为指定传输队列的名称 -u为指定死信队列的名称 最后的名子也就是队列管理器的名称了。有一点比较有意思的是,无论你在cmd下输入的是大写还是小写,他们都会自动转划到大写形式到管理台中,将来调用的时候如果你输入小写会告诉你找不到。
传输队列就是上边我举的例子里边的客户端发送消息的队列 死信队列一般来说用来存放有余一些原因错误不能放到正常队列的或者被扔出来的消息

启动或者重新启动这个mqm
strmqm saturn.queue.manager
停止这个mqm
endmqm saturn.queue.manager
删除这个mqm
dltmqm saturn.queue.manager

实际上下一步应该走mqsc比较好,因为实际操作中当我们建立一个mqm后就应该对其进行应用,这里的东西就太多,没必要说太细,就说个大概的环节吧。
建立好启动好mqm后进入其操作平台
runmqsc saturn.queue.manager
你会进入一个平台 在这里能够用到指令虽然不多 但是根据大量参数以及不同对象的类型 会产生很恐怖的命令数量。最后说说命令体吧,一目了然:具体的细节和组合方式请看http://www.lifeng.name/document/manual/mqm/csqzzj/csqzzj.htm

[行业交流]

阅读(11300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~