我差点疯了,就是因为第一次写这东东。发了好多次都没发上,最后才发现是中间的级联菜单没打开。高的我刚才郁闷了好一会儿! 都怀疑是不是自己智商有问题,还是这个blog 的应用程序应该多个帮助功能。来介绍一下如何才能写下自己的blog ,以帮助我这样的菜鸟! 哈哈,开个玩笑!
自己也是刚刚参加工作,对于学校里的那些视窗界面下的东东是熟悉的有点厌烦了,但那东西确实好用,我想这一点大家应该都不否认吧! 虽然现在开源的呼声甚高,但现实是Linux的东西和人们业已形成的习惯相左,大多数人还是倾向于windows 这样的OS ,毕竟很熟悉。从这一点,我真是敬佩比尔.盖茨先生的商业头脑和远见卓识。毕竟,技术的终极是为了服务于人嘛!
废话还是少说,等我看到满屏的命令行,冗长的命令参数和各种各样的符号,突然发现原来这世界还有另外的一番风景! ---------Unix / Linux 。虽然刚刚接触,但是我对于它的稳定性和健壮性真的很佩服。 所以想起写这样一篇关于mq series 的文章。我也知道,这方面的资料载网上应该是较少的。刚接触的时候,到网上搜了一天也没找到什么!倒是在ibm developer 的开发者论坛看到了点东东,都是基于mq series 的api 编程的文章。
我写的这点东西 也是从国外的网站上down下来的,只是内容比较久了,不只现在的各位大虾高手们是不是用的着。适用的是MQ Series Version 5 产品。mq series 系列既有小型机上的unix OS ,比如 AIX ;又有pc 上的unix ,比如SCO Unix ;还有专门的Sun Solaris 、HP-UX 等等,当然更不会忘了广大的视窗爱好者。关于mq 的中间件,都是一种屏蔽了底层软硬件细节的产品,自然也给它的上层用户提供了相关的接口,这种通信称之为商用消息队列(原文是 commercial messaging 我也不知道自己翻译的对不对!)。通过这样的通信接口,或者叫 MQI(Message Queuing Interface),程序可以在不同的平台上很容易的移植!有点象java 语言的某些特性。 我在看介绍的时候,文中提到如果想要很好的理解这里的机制,必须对操作系统和相关的设备(包括虚拟设备)有较深的理解。看完之后,感觉去确实如此啊!
其中对于Unix 下的mq series, 在应用时还是有一些注意事项的!
首先,AIX and HP-UX 下的mq 使用了unix 的子例程ftok 来产生标准的进程间通信密匙。在某一节点唯一的使用ftok 可以保证这些keys 都是独一无二的,这一点正是mq series 所需要的。
第二,MQCONN(mq connection 函数)为信号设置了自己的信号句柄:SIGSEGV 和 SIGBUS,在收到每一个新的MQI 呼叫的时候,这些信号的用户句柄被设置并保存。那么另外的信号量处理方式就不一样!如 SIGINT SIGQUIT SIGFPE SIGTERM SIGHUP 等,当这些信号量的句柄收到 MQI 的呼叫(CALL)时,原来的拥有信号量的句柄首先必须退出应用程序。否则,mqi 是不可以被再次呼叫的!
第三,对于每一个mqi call ,MQSeries 都会使用UNIX 的内部计时器ITIMER_REAL 来产生SIGALRM 信号。而且,任何SIGALRM句柄和计时器 都是在呼叫MQI 时保存在进程空间中,在退出时被释放的。