1.Tuxedo /Q组件概述Tuxedo /Q组件可以允许消息以队列的形式储存到硬盘或内存中以便之后的处理和调用。同时ATMI提供了一些从队列读取、添加消息的函数。回复消息和错误消息可以暂时保存在队列中,稍后再返回给客户端程序。服务器可以接受出队列和入队列消息的请求,对出队列的消息进行处理,并且可以管理相关队列的事务。队列空间是一种资源。Tuxedo为访问队列空间提供了符合XA规范的资源管理接口。这些接口可以保证消息入队列和取队列操作在一个两阶段提交的事务中完成。下图表示了队列服务的调用过程。2.Tuxedo /Q实例部署下面通过一个实例来演示一下/Q的配置和部署方法。这个实例位于tuxedo根目录/samples/atmi/qsample文件夹内。第一步:由于要修改qsample的配置文件, 我们输入下面命令将qsample复制到tuxedo根目录下(可以是任意目录)。cd samples/atmi
cp -r qsample ../../
第二步:进入qsample文件夹内,输入ls查看所有文件,文件列表如下。
README:描述该应用如何配置和运行的文件。
setenv:设置环境变量的脚本。
crlog:创建TLOG文件脚本。
crque:定义应用的队列空间和队列的脚本。
makefile:创建可执行文件的makefile。
client.c:客户端程序的源代码。
server.c:服务端程序的源代码。
ubb.sample:应用的配置文件。
runsample:一个用来构建和运行应用的脚本。
rmipc:移除队列空间的IPC资源的脚本。
第三步:在了解了各个文件的作用后,下面来编辑配置文件。由于整个配置文件的结构已经给你,我们只需要修改setenv脚本,该脚本会自动修改配置文件。打开setenv文件,将TUXDIR后的内容替换为当前机器tuxedo的安装目录。
TUXDIR=/usr/local/oracle/tuxedo11gR1; export TUXDIR
第四步:输入如下命令,运行runsample。
./runsample
运行该脚本过程中,屏幕上会出现一系列的信息,其中的如下内容就是应用的运行结果。该应用主要是将一串小写字符串转换为大写形式。
3.setenv和runsample的具体实现
从上面的内容可以看到,我们只是简单修改setenv然后调用runsample脚本就完成了整个程序的部署和运行。为了更深入理解/Q应用的实现,我们来分析一下这些脚本为我们干了哪些事情。下面是setenv的主要内容。
从setenv的源码可以看出,setenv主要为我们配置好了TUXDIR、APPDIR、PATHLD_LIBRARY_PATH、SHLIB_PATH和LIBPATH等一些环境变量。
下面是runsample脚本的主要内容:
# (c) 2003 BEA Systems, Inc. All Rights Reserved.
#Copyright (c) 1992 Unix System Laboratories, Inc.
#All rights reserved
#ident "@(#) samples/atmi/qsample/runsample $Revision: 1.5 $"
#
#set the environment
. ./setenv
chmod +w ubb.sample
uname="`uname -n`"
ed ubb.sample<<!
g;<uname -n>;s;;${uname};
g;<full path of TUXEDO software>;s;;${TUXDIR};
g;<full path of APPDIR>;s;;${APPDIR};
w
q
!
#build the client and server
make client server
#create the tuxconfig file
tmloadcf -y ubb.sample
#create the TLOG
./crlog
#create the QUE
./crque
#boot the application
tmboot -y
#run the client
client
#shutdown the application
tmshutdown -y
#remove the client and server
make clean
#remove the QUE ipc resources
./rmipc
#remove all files created
rm tuxconfig QUE stdout stderr TLOG ULOG*
"runsample" 37L, 782C
通过分析上面的源代码,我们可以很清楚地看到整个应用的构建和部署过程。
1.调用setenv脚本设置环境变量,并将相应的环境变量写入ubb.sample配置文件中。
2.编译客户端和服务端的程序。
3.调用tmloadcf -y ubb.sample命令生成tuxconfig文件。
4.创建相关的日志文件。
5.创建队列空间并分配相应的资源。
6.启动服务器并调用客户端程序,完成应用的运行。
7.关闭服务器,完成一些清理和资源回收工作。
针对具体的每一步,大家可以去查看相关的脚本。这些脚本的实现,其实都是通过向qmadmin发送指令完成的。例如下面的crlog脚本,就是向qmadmin发送创建日志的请求而已。