IBM Websphere Integration Developer 6.1

G:\ibm_soft\IBM_WID_6.0.2

E:\lindows\IBMWID-6.0.2\disk1

E:\lindows\IBMWID-6.0.2\disk2

E:\lindows\IBMWID-6.0.2\disk3

E:\lindows\IBMWID-6.0.2\disk4

E:\lindows\IBMWID-6.0.2\disk5

E:\lindows\IBMWID-6.0.2\disk6

Z:\>ls -l
total 0
drwxrwxrwx   1 user     group           0 Sep  8  2009 IBMWID_6.0.2
drwxrwxrwx   1 user     group           0 Aug 27  2008 wid6022_fixpack
drwxrwxrwx   1 user     group           0 Aug 27  2008 wid6022_interim_fix001

面向消息的中间件和ActiveMQ的介绍

http://marshal.iteye.com/blog/139636

什么是消息中间件


面向消息的中间件 :Message-oriented Middleware, MOM

基本功能 :将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。

主要特点

  • 消息异步接受,类似手机短信的行为,消息发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度;
  • 消息可靠接收,确保消息在中间件可靠保存,只有接收方收到后才删除消息,多个消息也可以组成原子事务。

消息中间件的主要应用场景

公司在发展过程中,开发(或者购买了)多套企业信息系统,比如财务系统,人事系统,在线销售系统,运营系统等。

这些系统生产/消费公司的各种业务数据。

公司需要将这些系统集成(整合),比如让在线销售系统的订单数据输入到财务系统中。

类似应用的一般系统需求是:

  • 可靠传输,数据不能丢失,有的时候,也会要求不能重复传输;
  • 异步传输,否则各个系统同步发送接受数据,互相等待,造成系统瓶颈。


公司可以为此开发自己的软件服务,代价会比较大,现在一般使用已经成型的消息中间件

目前比较知名的消息中间件:

  • IBM MQSeries
  • BEA WebLogic JMS Server
  • Oracle AQ
  • Tibco
  • SwiftMQ
  • AcitveMQ:是免费的java实现的消息中间件

什么是JMS


JMS Java Message Service,Java消息服务。

和消息中间件的关系,类似于DBMS和JDBC的关系。

JMS是个标准,见:java.sun.com/products/jms/

目前版本是1.1。

JMS是J2EE(JavaEE)标准的一部分。

ActiveMQ的简单使用

简介


ActiveMQ,网址:activemq.apache.org/

目前是Apache下的一级项目。

免费开源由java编写符合JMS1.1标准的消息中间件。

另外,它也支持通过除java语言外的语言的使用:

  • PHP
  • C/C++
  • C#
  • Ruby
  • Perl
  • Python

简单使用


本文操作系统Windows XP。

SUN JDK 1.6.0_03。
启动:

进入${active-mq}\bin目录。

运行activemq.bat

检查安装是否成功:

命令行执行如下命令

 
  1. netstat -an|find  "61616"   


显示如下内容表示启动成功:

 
  1. TCP     0.0 . 0.0 : 61616            0.0 . 0.0 : 0               LISTENING  



创建队列:

最简单的办法是使用java6提供的jconsole,使用方法见:marshal.iteye.com/blog/138879

在jconsole中使用activemq提供的MBean创建队列。



向ActiveMQ发送消息:



接收信息:

使用该队列的browse方法获取。

删除队列:

使用broker/操作/removeQueue方法删除。

其他操作队列的方法:


使用JMS API,发送和接收队列、主题中的消息,可以结合Spring简化开发。

第三方图形化客户端,比如hermesjms:www.hermesjms.com ,是免费的java swing编写的JMS客户端。

还有其他基于web的客户端。


-----------------------------------------------------------------------------------------------------------------------------------

ibm.com/cn /services/learning IBM 培训、服务、认证

http://www.ibm.com/developerworks/cn/offers/sek/

2008 年最新 IBM 软件试用版 DVD,免费征订!

MQ安装笔记

http://blog.chinaunix.net/u2/66227/showart_528787.html

      MQ安装笔记
        实验环境(11-1.1369_FC4)
               
==========================================================================================

MQ安装包(Qv600Trial-x86_linux_2.tar.gz)

mqlicense.sh(该脚本需要该两处地方)

# Set JRE location
  JRE=/usr/local/mq/lap/IBMJava2-142/jre/bin/java


# Set classpath
LAPCLASSPATH=${PROGPATH?}/lap/${LAP_JAR}:${PROGPATH?}/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/lib/rt.jar:${PROGPATH?}/lap/jre/lib/i18n.jar
==========================================================================================================


[root@10 mq]# ./mqlicense.sh -accept

Licensed Materials - Property of IBM

 5724-H72

 (C) Copyright IBM Corporation 1994, 2005 All rights reserved.

US Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.

Agreement accepted:  Proceed with install.

====================================================================================================


[root@10 mq]# rpm -ivh MQSeriesRuntime-6.0.0-0.i386.rpm
Preparing...                ########################################### [100%]
   1:MQSeriesRuntime        ########################################### [100%]
[root@10 mq]# rpm -vih MQSeriesSDK-6.0.0-0.i386.rpm
Preparing...                ########################################### [100%]
   1:MQSeriesSDK            ########################################### [100%]
[root@10 mq]# rpm -ivh MQSeriesServer-6.0.0-0.i386.rpm
Preparing...                ########################################### [100%]
   1:MQSeriesServer         ########################################### [100%]

[root@10 mq]# rpm -ivh MQSeriesClient-6.0.0-0.i386.rpm
Preparing...                ########################################### [100%]
   1:MQSeriesClient         ########################################### [100%]
[root@10 mq]# rpm -ivh MQSeriesSamples-6.0.0-0.i386.rpm
Preparing...                ########################################### [100%]
   1:MQSeriesSamples        ########################################### [100%]

======================================================================================================


[mqm@aaaa ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME
export LD_ASSUME_KERNEL=2.2.5
export AMQ_INHIBIT_DLCLOSE=TRUE export
export LC_all=en_US

======================================================================================

创建缺省的队列管理器
[mqm@10 ~]$ crtmqm -q MQ1
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager created.
Creating or replacing default objects for MQ1.
Default objects statistics : 40 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.


启动队列管理器
[mqm@10 ~]$ strmqm MQ1
There are 90 days left in the trial period for this copy of WebSphere MQ.
WebSphere MQ queue manager running.

停止队列管理器的几种方法
[mqm@aaaa QM1]$ endmqm QM1       受控停止         
[mqm@aaaa QM1]$ endmqm -i QM1   立即停止
[mqm@aaaa QM1]$ endmqm -p QM1   强制停止 

删除队列管理器
[mqm@10 ~]$ dltmqm QM2
WebSphere MQ queue manager 'QM2' deleted.

查看队列管理器的状态
[mqm@10 ~]$ dspmq -m QM1
QMNAME(QM1)                                               STATUS(Running)


启动侦听
[mqm@aaaa bin]$ runmqlsr -t tcp -p 1515 -m QM1 &
[1] 20752
[mqm@aaaa bin]$ 5724-H72 (C) Copyright IBM Corp. 1994, 2005.  ALL RIGHTS RESERVED.

停止侦听
[mqm@aaaa bin]$ endmqlsr -m QM1
A WebSphere MQ listener will end shortly.


运行MQSeries命令

[mqm@10 ~]$ runmqsc QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2005.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM1.

       :

清除队列中的所有消息
clear ql('DL1')
     2 : clear ql('DL1')
AMQ8022: WebSphere MQ queue cleared.


删除队列
delete qlocal(CSDL3)
     6 : delete qlocal(CSDL3)
AMQ8007: WebSphere MQ queue deleted.

delete qremote(RDL3)
    11 : delete qremote(RDL3)
AMQ8007: WebSphere MQ queue deleted.


==================================================================================


单向发送:

示例

发送方QM1

define qlocal ('CSDL1') usage (XMITQ)
DEFINE QREMOTE('RDL1') RQMNAME('QM2') RNAME('DL2') XMITQ ('CSDL1')
define channel(CH1) chltype(SDR) conname('10.4.5.212(1414)') xmitq(CSDL1)
runmqchl -c CH1 -m QM1 &


接收方QM2

define ql (DL2) replace
define channel (CH1) chltype (RCVR)
runmqlsr -t tcp -p 1414 -m QM2 &

==================================================================================


接收:


[mqm@10 bin]$ ./amqsput RDL1 QM1
Sample AMQSPUT0 start
target queue is RDL1
hello
thee
gdd
eee

[mqm@fc4-test bin]$ ./amqsget DL2 QM2
Sample AMQSGET0 start
message <hello>
message <thee>


message <gdd>
message <eee>
no more messages
Sample AMQSGET0 end

=====================================================================================


双向发送:

示例

发送方QM1

define qlocal ('CSDL1') usage (XMITQ)
DEFINE QREMOTE('RDL1') RQMNAME('QM2') RNAME('DL2') XMITQ ('CSDL1')
define channel(CH1) chltype(SDR) conname('10.4.5.212(1414)') xmitq(CSDL1)
runmqchl -c CH1 -m QM1 &

define ql (DL1) replace
define channel (CH2) chltype (RCVR)
runmqlsr -t tcp -p 1515 -m QM1 &


接收方QM2

define ql (DL2) replace
define channel (CH1) chltype (RCVR)
runmqlsr -t tcp -p 1414 -m QM2 &

define qlocal ('CSDL2') usage (XMITQ)
DEFINE QREMOTE('RDL2') RQMNAME('QM1') RNAME('DL1') XMITQ ('CSDL2')
define channel(CH2) chltype(SDR) conname('10.4.5.211(1515)') xmitq(CSDL2)
runmqchl -c CH2 -m QM2 &

=================================================================================

接收
[mqm@fc4-test bin]$ ./amqsput RDL2 QM2
Sample AMQSPUT0 start
target queue is RDL2
heell


[mqm@10 bin]$ ./amqsget DL1 QM1
Sample AMQSGET0 start
message <heell>
no more messages
Sample AMQSGET0 end

==================================================================================


进程列表:(监听端口、通道)
10.4.5.211
[mqm@aaaa bin]$ ps ux|grep 'runmqchl'
mqm      11061  0.0  2.0  20732  2632 pts/0    S    00:05   0:00 runmqchl -c CH1 -m QM1
mqm      11062  0.0  2.0  20732  2632 pts/0    S    00:05   0:00 runmqchl -c CH1 -m QM1
mqm      11063  0.0  2.0  20732  2632 pts/0    S    00:05   0:00 runmqchl -c CH1 -m QM1
mqm      11064  0.0  2.0  20732  2632 pts/0    S    00:05   0:00 runmqchl -c CH1 -m QM1
mqm      11065  0.0  2.0  20732  2632 pts/0    S    00:05   0:00 runmqchl -c CH1 -m QM1
mqm      11897  0.0  0.0    284    96 pts/0    R+   00:43   0:00 grep runmqchl
[mqm@aaaa bin]$ ps ux|grep 'runmqlsr'
mqm      11605  0.0  1.8  17136  2284 pts/0    S    00:31   0:00 runmqlsr -t tcp -p 1515 -m QM1
mqm      11606  0.0  1.8  17136  2284 pts/0    S    00:31   0:00 runmqlsr -t tcp -p 1515 -m QM1
mqm      11607  0.0  1.8  17136  2284 pts/0    S    00:31   0:00 runmqlsr -t tcp -p 1515 -m QM1
mqm      11608  0.0  1.8  17136  2284 pts/0    S    00:31   0:00 runmqlsr -t tcp -p 1515 -m QM1
mqm      11609  0.0  1.8  17136  2284 pts/0    S    00:31   0:00 runmqlsr -t tcp -p 1515 -m QM1
mqm      11914  0.0  0.3   3736   424 pts/0    R+   00:43   0:00 grep runmqlsr


10.4.5.212
[mqm@fc4-test bin]$ ps ux|grep 'runmqlsr'
mqm      19760  0.0  1.8  17136  2280 pts/1    S    01:05   0:00 runmqlsr -t tcp -p 1414 -m
mqm      19761  0.0  1.8  17136  2280 pts/1    S    01:05   0:00 runmqlsr -t tcp -p 1414 -m
mqm      19762  0.0  1.8  17136  2280 pts/1    S    01:05   0:00 runmqlsr -t tcp -p 1414 -m
mqm      19763  0.0  1.8  17136  2280 pts/1    S    01:05   0:00 runmqlsr -t tcp -p 1414 -m
mqm      19764  0.0  1.8  17136  2280 pts/1    S    01:05   0:00 runmqlsr -t tcp -p 1414 -m
[mqm@fc4-test bin]$ ps ux|grep 'runmqchl'
mqm      20347  0.0  2.0  20732  2628 pts/1    S    01:32   0:00 runmqchl -c CH2 -m QM2
mqm      20348  0.0  2.0  20732  2628 pts/1    S    01:32   0:00 runmqchl -c CH2 -m QM2
mqm      20349  0.0  2.0  20732  2628 pts/1    S    01:32   0:00 runmqchl -c CH2 -m QM2
mqm      20350  0.0  2.0  20732  2628 pts/1    S    01:32   0:00 runmqchl -c CH2 -m QM2
mqm      20351  0.0  2.0  20732  2628 pts/1    S    01:32   0:00 runmqchl -c CH2 -m QM2
mqm      20606  0.0  0.2   1688   360 pts/1    R+   01:44   0:00 grep runmqchl

=======================================================

[mqm@aaaa ~]$ runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, 2005.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager QM1.

检查当前的通道状态
dis CHS('CH1')
    16 : dis CHS('CH1')
AMQ8417: Display Channel Status details.
   CHANNEL(CH1)                            CHLTYPE(SDR)
   CONNAME(10.4.5.212(1414))               CURRENT
   RQMNAME(QM2)                            STATUS(RUNNING)
   SUBSTATE(MQGET)                         XMITQ(CSDL1)

查看队列:
 dis QUEUE(RDL1)
AMQ8409: Display Queue details.
   QUEUE(RDL1)                             TYPE(QREMOTE)
   ALTDATE(2007-02-21)                     ALTTIME(07.00.39)
   CLUSNL( )                               CLUSTER( )
   CLWLPRTY(0)                             CLWLRANK(0)
   DEFBIND(OPEN)                           DEFPRTY(0)
   DEFPSIST(NO)                            DESCR( )
   PUT(ENABLED)                            RQMNAME(QM2)
   RNAME(DL2)                              SCOPE(QMGR)
   XMITQ(CSDL1)

       :

查看队列深度:
display qstatus('CSDL1')
AMQ8450: Display queue status details.
   QUEUE(CSDL1)                            TYPE(QUEUE)
   CURDEPTH(0)                             IPPROCS(1)
   LGETDATE( )                             LGETTIME( )
   LPUTDATE( )                             LPUTTIME( )
   MONQ(OFF)                               MSGAGE( )
   OPPROCS(1)                              QTIME( ,  )
   UNCOM(NO)

       :


=========================================================

MQ错误日志的位置


a、当队列管理器名称已知,并且队列管理器可用时,错误日志位于 /var/mqm/qmgrs/qmname/errors 目录下,如:与MQ通道有关的消息
b、队列管理器不可用时,错误日志位于 /var/mqm/qmgrs/@SYSTEM/errors 目录下
c、错误是与Client 应用程序有关,错误日志位于: /var/mqm/errors 目录下


MQSeries队列中存放的数据量有上限吗?队列文件大小的限制是什么吗?


在MQSeries产品中,每一个本地队列都对应于文件系统中的一个文件,为了避免单个队列无控制的占用大量磁盘空间,导致系统资源问题,
MQSeries对单个队列文件的最大字节数做了一个限制。在MQSeries V5.0中,这个阀值是320MB,也就是说对于一个本地队列,它所对应的
队列文件不能大于320MB,(队列文件的大小主要取决于队列中所存放的消息个数以及每个消息的长度)。常规情况下320MB对于单个队列
来说是足够大的,但在某些特殊情况下,用户可能的确需要单个队列能拥有更大的文件系统空间,所以MQSeries提供了优化参数供用户来调整
这个限制的大小。阀值可以最大调到1GB,即每个队列文件最大可以占有1GB的磁盘空间。从另一个角度上看,在另外的一些系统中,可能用
户的需求是要限制每个队列的大小,这时320MB可能又显得太大了,同样我们也可以利用这个参数来限制队列文件的最大容量。

这个参数的最小值是20MB,即每个队列文件最大只能有20MB。对于最新的MQSeries V5.1,默认的队列文件大小阀值已设为2GB,不可以再调大,
但可以调小,最小到20MB。另外一点需要注意的是,修改这个参数对已经创建出的队列是没有效果的,对某个队列而言,它所对应队列文件的大
小在队列创建时就已经确定。所以修改这个参数只会影响到新建的队列。


对于UNIX和OS/2上5.0,5.1版本以及NT上5.0版本的MQSeries,在队列管理器的qm.ini文件中加入以下一段:
TuningParameters:
DefaultQFileSize = 1000000000
上例中的1000000000代表队列文件大小阀值,对V5.0,取值范围,如上所述(20000000-1000000000);对V5.1,取值范围是(20000000-2000000000)。

通道类型的组合形式有哪几种?如何使用?

由发送方启动通道, 发送方请求接收方通道启动, 并将其传输队列中的消息发送给接收方,接收方将消息传送给目标队列.
请求-服务器通道(Requester-server)

由请求方启动通道. 请求方请求服务器方启动通道, 服务器方将它的传输队列中的消息发给请求方.
服务器方也可以启动通道, 但这只有对通道的conname属性中定义了请求方联接名称时适用.称为完整定义的服务器(Fully qualified server).
请求-发送通道(Requester-sender)

由请求方启动通道,但发送方终止该请求并根据它的通道定义信息重新启动通道(callback). 并将传输队列中的消息发给请求方.
服务器-接收通道(Server-receiver)

类似于发送-接收通道, 但只对完整定义的服务器(在CONNAME中定义了对方联接名称)适用. 通道启动必须由服务器方发起.

进一步详细信息请参照 MQSeries Intercommunication 联机手册

===============================================================

    包括MQ的安装学习和MQ的基础命令操作,以及最后能配置一个MQ远程通信。安装部分主要注意mqlicense.sh文件的配置,基础命令操作部分需注 意严格遵守MQ命令的格式规范,并了解每个参数的含义达到正确使用。加强命令的练习。配置MQ通信部分,要保证一个MQ能够单向远程通信,需注意几点。对 于Sender这块,首先要有一个队列管理器,建立一个传输队列,建立一个远程队列,建立一个通道。无需建立本地队列。对于Receive这块,首先要有 一个队列管理器,建立一个本地队列,建立一个与发送方通道名字一样的接受通道。在Sender和Receive预备工作做好之后,首先要在Receive 启动侦听,然后再到Sender启动通道。这样就能实现Sender->Receive单向通信了。对于双向通信这里不再赘述


最近在配置MQ,记下了一些常用的MQ命令,如下:

创建队列管理器
crtmqm –q QMgrName
-q是指创建缺省的队列管理器

删除队列管理器
dltmqm QmgrName

启动队列管理器
strmqm QmgrName
如果是启动默认的队列管理器,可以不带其名字

停止队列管理器
endmqm QmgrName 受控停止

endmqm –i QmgrName 立即停止

endmqm –p QmgrName 强制停止

显示队列管理器
dspmq –m QmgrName

运行MQ命令
runmqsc QmgrName
如果是默认队列管理器,可以不带其名字

往队列中放消息
amqsput QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

从队列中取出消息
amqsget QName QmgrName
如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字

启动通道
runmqchl –c ChlName –m QmgrName

启动侦听
runmqlsr –t TYPE –p PORT –m QMgrName

停止侦听
endmqlsr -m QmgrName

下面是在MQ环境中可以执行的MQ命令(即在runmqsc环境下可以敲的命令)

定义持久信队列
DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE

设定队列管理器的持久信队列
ALTER QMGR DEADQ(QNAME)

定义本地队列
DEFINE QL(QNAME) REPLACE

定义别名队列
DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)

远程队列定义
DEFINE QREMOTE(QRNAME)RNAME(AAA) RQMNAME(QMGRNAME) XMITQ(QTNAME)

定义模型队列
DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)

定义本地传输队列
DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) INITQ(SYSTEM.CHANNEL.INITQ) PROCESS(PROCESSNAME) REPLACE

创建进程定义
DEFINE PROCESS(PRONAME)DESCR(‘STRING’) APPLTYPE(WINDOWSNT) APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)
其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等

创建发送方通道
DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE
其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

创建接收方通道
DEFINE CHANNEL(SDR_ TEST) CHLTYPE(RCVR) REPLACE

创建服务器连接通道
DEFINE CHANNEL(SVRCONNNAME) CHLTYPE(SVRCONN) REPLACE

显示队列的所有属性
DISPLAY QUEUE(QNAME) [ALL]

显示队列的所选属性
DISPLAY QUEUE(QNAME) DESCR GET PUT
DISPLAY QUEUE(QNAME)MAXDEPTH CURDEPTH

显示队列管理器的所有属性
DISPLAY QMGR [ALL]

显示进程定义
DISPLAY PROCESS(PRONAME)

更改属性
ALTER QMGR DESCR(‘NEW DESCRIPTION’)
ALTER QLOCAL(QNAME) PUT(DISABLED)
ALTER QALIAS(QNAME) TARGQ(TARGQNAME)

删除队列
DELETE QLOCAL(QNAME)
DELETE QREMOTE(QRNAME)

清除队列中的所有消息
CLEAR QLOCAL(QNAME)


以下是一些高级配置的命令:

amqmcert                  配置SSL证书

amqmdain                配置windows上的MQ服务

crtmqcvx                    转换数据

dmpmqaut                转储对象权限管理

dmpmqlog                转储日志管理

dspmq                         显示队列管理器   //Tivoli O

dspmqaut                  显示打开对象的权限

dmpmqcap               显示处理程序容量和处理程序数

dspmqcsv                 显示命令服务器状态

dspmqfls                   显示文件名

dspmqtrc                   跟踪MQ输出(HP-UNIX LINUX Solaris)

dspmqrtn                   显示事务的详细信息

endmqcsv                 停止队列管理器上的命令服务器

strmqcsv                    启动队列管理器上的命令服务器

endmqtrc                   停止跟踪

rcdmqimg                  向日志写对象的映像

rcmqobj                      根据日志中的映像重新创建一个对象

rsvmqtrn                     提交或逆序恢复事务

end

猜你喜欢

转载自lindows.iteye.com/blog/228180