以qsqmple分析/q_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4115 | 回复: 1   主题: 以qsqmple分析/q        下一篇 
yunpeng.xian
注册用户
等级:少校
经验:993
发帖:34
精华:0
注册:1970-1-1
状态:离线
发送短消息息给yunpeng.xian 加好友    发送短消息息给yunpeng.xian 发消息
发表于: IP:您无权察看 2014-9-3 11:02:28 | [全部帖] [楼主帖] 楼主

先介绍一些基本概念:

/Q


TUXEDO的可靠消息队列,是TUXEDO产品的一个组成部分,功能类似于IBM

MQSeries,BEA MessageQ等其他消息中间件。

message


消息,存储在QUEUE中的数据称为消息(MESSAGE,一个QUEUE中可以有多条消息.QUEUE的操作是以消息为单位的,即以次只能发送或取出一条消息。

queue


队列,用于保存发送来的消息,以便随后的处理,一个QUEUE中可以同时存在多条消息。

queue space


队列空间,QUEUE的一个集合,以便进行统一管理,一个QUEUE SPACE中可包含多个QUEUE

TMQUEUE


 TUXEDO带的一个SERVER,接收用tpenqueue()发送来的消息.并把他们保存到相应的

QUEUE,接受并处理tpdequeue()的请求。

tmqforward


  TUXEDO带的一个SERVER,从一个QUEUE中取数据,然后调用一个���该QUEUE同名的

SERVICE进行处理,并把该SERVICE返回的结果发送到另一个QUEUE中。

tms_qm

是与/Q资源管理器对应的TMSTRANSACTION MANAGER SERVER),它使对

消息的发送与取出操作可以以事务的方式进行.并使/Q资源管理器可参与全局事务。

/Q有两种使用方式,我们称之为基本模式和转发模式

1. 基本模式:

只用到TMQUEUE,不使用TMQFORWARD,不调用SERVICEQUEUE中的消息进行处理。流程说明如下(不需要进行4-7的操作,也不需要定义与QUEUE同名的SERVICE)

1. 客户端调用tpenqueue()把数据发送到SERVICE1

2. TMQUEUE接收tpenqueue()发送来的数据,并把他们保存到SERVICE1

3. 如果以上操作成功,那么tpenqueue()返回成功.

8. 客户端调用tpdequeue(),请求从SERVICE1中取数据

10. TMQUEUE收到该请求,它把相应的消息从SERVICE1中取出,并发送给客户端

2. 转发模式:

用到TMQUEUETMQFORWARD,要定义与QUEUE同名的SERVICE并调用SERVICEQUEUE中的消息进行处理。流程说明如下:

1. 客户端调用tpenqueue()把消息发送到SERVICE1

2. TMQUEUE接收tpenqueue()发送来的消息,并把他们保存到SERVICE1

3. 如果以上操作成功,那么tpenqueue()返回成功.

4. TMQFORWARD在某个设定的时刻,SERVICE1中取消息

5. TMQFORWARD用事务模式调用(采用TPCALL())一个名为 " SERVICE1" SERVICE,将

消息转发给SERVICE1

6. 名为 "SERVICE1" SERVICE 把处理的结果用tprerurn()返回给TPQFORWARD.

7. TPQFORWARD把收到的处理结果发送到REPLYQ

8. 客户端调用tpdequeue(),请求从REPLYQ中取回响应消息

9. TMQUEUE收到该请求,它把相应的消息从queue1中取出,并发送给客户端

10.如果以上操作成功,那么tpdequeue()返回成功

注意当一条消息QUEUE中被取出后,在该QUEUE中它将被删除,其他的进程就看不到该消息了.如果有多个进程同时要取该消息,只有最早的那个进程能取到该消息.

weblogic中类似我们需要对/Q进行管理,具体的管理工作如下:

/Q的管理工作包括:QMCONFIG环境变量的设置,用QMADMIN或图形化管理工具进行QUEUE SPACEQUEUE的创建及管理,因为/Q也是一种资源管理器,所以要象数据库那样在UBBCONFIGGROUP种进行配置。在UBBCONFIG中还要配置TMQUEUETMQFORWARD这两个SERVER。下面分别进行说明:

GROUP中的配置

GROUP中的配置与数据库通过XA协议与TUXEDO连接的配置差不多因为QUEUE SPACE 是资源管理器,而一个组只能有一个资源管理器。所以QUEUE SPACE 与 QUEUE SERVER GROUP 之间是一对一的关系GROUP中的配置有:

GROUP中必须有以下配置:

1. TMS(TRANSACTION MANAGEMENT SERVER): TMS_QM

2. OPENINFO,

它的设置格式如下: OPENINFO="TUXEDO/QM:<device_name:<queue_space_name>"

   TUXEDO/QM:为/Q所对应的资源管理器的名称,$TUXDIR/UDATAOBJ/RM指定

   device_name指定存储该QUEUE SPACE的设备(文件),queue_space_name为该QUEUE SPACE的名称

SERVER中要做的配置:

SERVER这一节中要配置TMQUEUE(必须),TMQFORWARD(可选)这两个SERVER,

QMCONFIG环境变量的设置

QMCONFIG环境变量指定存储QUEUE SPACE的设备(文件),以便QMADMIN对它进行管理.它可在命令行中设置,也可在执行QMADMIN时在命令行中指定。

UNIX

1. QMCONFIG=/usr/tuxedo/qsample/QUE; export QMCONFIG

2. qmadmin /usr/tuxedo/qsample/QUE

QMADMIN的使用方法

TUXEDO提供一个命令行管理工具QMADMIN,用于对/Q进行管理,QMADMIN类似TMADMINQMADMIN常用的命令介绍如下:

qspacecreate: 创建一个新的QUEUE SPACE

qcreate:     在某个QUEUE SPACE 上创建QUEUE

qinfo:       查看某个QUEUE中的信息

qlist:       显示一个QUEUE SPACE所包含的QUEUE,及每个QUEUE中的当前消息个数

qopen:      打开一个QUEUE SPACE

qclose:      关闭一个QUEUE SPACE

说明:

QMADMIN中输入help可以列出所有的命令,help命令名可以得到该命令的帮助


> help qinfo


具体的命令参数我就不写了太多了。

现在我们来分析一下tuxedo中自带的qsample例子。它是使用的转发模式。在例子中的文件如下:

北京联动北方科技有限公司

runsample是运行和结束整个例子的,包括环境变量的配置,和其他一些配置

setenv是配置环境变量。

crlog是配置日志文件,TMS_QM在队列事务管理时,需要用到日志设备,创建办法也是用nmake命令。

crque是创建消息队列,qsample用到了一个队列空间QSPACE和三个队列STRINGRPLYQerrque

makefile是用来编译的文件。

ubb.sampleubb配置文件。

rmipc是为队列释放IPC资源

对于整个文件的运行过程可以参看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`"
uname="xianyu"
ed ubb.sample<<!
#g;<uname
-n>;s;;${uname};
g;xianyu;s;;${uname};
g;/usr/local/bean/tuxedo11gR1;s;;${TUXDIR};
g;/usr/local/bean/tuxedo11gR1/samples/atmi/qsample;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*


对于此例子由于大部分东西已经集成,运行起来相对方便。将ubb.sample,和其他的文件里需要配置的东西补全

直接使用sh runsample即可,结果如下:

北京联动北方科技有限公司

北京联动北方科技有限公司

北京联动北方科技有限公司

北京联动北方科技有限公司

北京联动北方科技有限公司




赞(0)    操作        顶端 
koei
版主
等级:大校
经验:4186
发帖:7
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei 加好友    发送短消息息给koei 发消息
发表于: IP:您无权察看 2014-9-4 8:42:10 | [全部帖] [楼主帖] 2  楼

/Q有个好处是可以参与全局事务,和数据库的SQL操作,同时成功或者同时回滚

北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论