当前位置:文档之家› 断点续传简明二次开发以及测试手册

断点续传简明二次开发以及测试手册

1二次开发接口导入com.ibm.mqtrans. MQTransInterface类、com.ibm.mqtrans.model.TransInfo类、com.ibm.mqtrans.model.TransInfo,com.ibm.mqtrans.model .ReceveFileData类com.ibm.mqtrans. MQTransInterface类提供了以下几个接口方法:initFromConfig(String configFileName)此方法是静态方法,在调用MQ断点续传接口时仅仅需要调用此接口一次configFileName:是所需要的配置文件的绝对路径名方法:int sendFile(String absolutFileName,String receiverName,TransInfo transInfo) 发送文件到MQ服务器中。

参数:absolutFileName:要发送的文件名receiverName:此文件的接收者,使用时请置NULLtransInfo:存储了发送的字节数目等信息,使用此方法时每使用一次请创建此对象一次。

返回值:/** -6:没有足够的可用线程来启动分块传输,请过段时间重试* -5:没有空闲的服务线程服务* -4:要发送的文件不能够读取,不能够继续* -3:要发送的不是文件* -2:要发送的文件不存在* -1:失败* 0:成功* 1:无法取得与MQ队列管理器的连接* 2:与MQ队列管理器的连接无效,即出现网络失效错误*/方法:List getReceiveFileList(String receiverName,int count)从MQ服务器中取得可以下载的文件列表参数:receiverName:接收者,使用时请置NULLcount:需要此接口的返回数目,如置上50返回值:返回能够接收的文件列表对象,此列表包含ReceveFileData对象ReceveFileData对象的定义:Msgid:唯一标志能够接收的文件IDChunkcount:此文件被分成几段上传的,也就意味着将分成几段同时下载fileLength:此文件的长度desc:此文件的描述信息,此信息的格式为:主机名+":"+IP地址+":"+文件名;tradeCode:需要调用外部类的交易ID,现在不支持方法:String recvFile(ReceveFileData receveFileData,String dirName,String receiverName,TransInfo transInfo,List errorList)接收文件,调用此方法前需要先调用getReceiveFileList参数:receveFileData:调用getReceiveFileList方法返回的List中对应的对象,指明需要下载的文件dirName:指定下载下来的文件需要存放的路径transInfo: 存储了接收的字节数目等信息,使用此方法时每使用一次请创建此对象一次。

errorList:错误信息的一些列表,主要是对应分段下载有多个信息1.1如何编译和修改此系统此系统是采用JA V A语言,eclipse IDE环境实现,在相应的工程目录中,src目录是源代码的目录,lib 目录是系统所需要的外部库的目录(需要把这个目录中相应的JAR文件加入到ECLIPSE环境中)。

JDK需要1.5 。

当然用JDK1.4.2也是可以进行编译和测试的,不过建议使用JDK1.5。

2配置文件定义<sysparamset><mqparamset><!--与MQ服务器的连接配置信息,这个条目不可以存在多个id:标志这个条目的序号connectmethod:连接方式0:采用进程间通讯方式连接,如果采用此方式的话程序只能和MQ SERVER放在同一台机器上1:采用TCP/IP的方式连接queuemanager:要连接的队列管理器名称hostname:要连接的主机名称port:要连接的端口号channelname:要连接的通道名称ccsid:1381userid:连接MQ的用户IDpassword:连接MQ的用户密码connectionpollnum:连接此个条目对应队列管理器的连接池的中的最大数目timeout:在此个条目对应队列管理器的连接池的中空闲连接的超时时间,超过此时间连接将被清除掉分钟为单位--><mqconinfo id="1" connectmethod="1" queuemanager="TESTMB.QM" hostname="tjw" port="3414" channelname="SYSTEM.ADMIN.SVRCONN" ccsid="1381"userid="" password="" connectionpollnum="5" timeout="10" /><!--是否启动连接清除线程0:不启动1:启动--><startpurgethread>1</startpurgethread><!--连接清除线程启动间隔时间,即每隔多少时间启动一次单位为分钟--><purgethreadruninterval>1</purgethreadruninterval></mqparamset><!--线程池容纳线程的最大数目,数目扩大主要是为了大文件分块并发传输用和多线程并发发送和接收单个文件用--><threadpoolnum>2</threadpoolnum><transparamset><!--MQ消息传输是否启用持久化,如果为了追求最高的传输效率的话不启用--><msgpersist>0</msgpersist> <!--程序在内存中的控制信息是否持久化,如果为了追求最高的传输效率的话不启用,但是出现程序突然宕机的话,将不会从失败的那一点开始传输--><controlmsgpersist>1</controlmsgpersist><!-- 当传输文件的时候,程序将从文件读取msgsize这个大小的内容,做为MQ消息的数据区打入MQ中,以K为单位--><msgsize>32</msgsize><!--对于大文件可能会启用分块传输机制,即是启动多个线程并行的传输isstart:是否启动,0:不启动1:启动//filesize:在isstart标志设为启动的状态的情况下,多大的文件才需要启用分块传输机制,以K为单位chunknum:分成多少块传输,数目最好小于等于threadpoolnum的值--><chunktransparamset isstart="0" filesize="10240" chunknum="2"/><!--文件数据将打入哪个队列中--><queuename>TRANS.FILEDA TA</queuename><!--文件传输控制消息将打入哪个队列中--><filetranscontorlqueuename>FILETRANS.CONTROL</filetranscontorlqueuename><!--文件完成消息将打入哪个队列中--><filetranscontorlfinishqueuename>FILETRANS.CONTROL.FINISH</filetranscontorlfinish queuename></transparamset><!--系统需要的临时目录--><temppath>c:\temp</temppath></sysparamset>3系统初始化1、安装MQ服务器,并建立相应地队列管理器(如TESTQM),并且建立一个侦听器(如侦听1414端口)。

2、接口的日志信息记录是采用LOG4J库,所以如果更改相应的日志记录信息请修改log4j的配置文件3、打开配置文件sysparamconfg.xml文件,找到queuename、filetranscontorlqueuename、filetranscontorlfinishqueuename三个节点修改相应的值或者不进行修改。

并在队列管理器中建立此三个节点对应的值的队列名,(特别是需要把filetranscontorlqueuename针对的最大深度值改大,如改成5千万)。

示例:我们在总公司端安装了MQ服务器,下面大概有31个分公司需要往总公司端传送数据。

我们可以把这31家分公司按照一定的规则划分如下所示:||| 华北(NC.QM 1414)|||北京分公司|||天津分公司||| 华东(EC.QM 2414)|||上海分公司||| 浙江分公司||江苏分公司|||华南(SC.QM 3414)|||广东分公司|||其它(OTHER.QM)针对华北地区建立一个队列管理器如NC.QM,其它几大地区类似,并且监听不同的端口号,如华北的1414,华东的2414等;然后对每个地区如华东地区,由于上海、浙江、江苏这三家分公司的数据量都差不多,而其它分公司较少,所以我们对上海、浙江、江苏这三家分公司建立不同的队列来存放相应地数据(queuename、filetranscontorlqueuename、filetranscontorlfinishqueuename三个节点对应的数据每个分公司都不一样,如上海分公司为SH. TRANS.FILEDATA, SH.FILETRANS.CONTROL, SH.FILETRANS.CONTROL.FINISH.浙江和江苏的都是类似,并且对于每个分公司都在服务端启动一个JA V A进程来进行相应的接收工作)。

4、打开配置文件sysparamconfg.xml文件,找到msgpersist节点,把此节点的值改成1的话将启用MQ消息持久性,传输性能将下降1倍左右,但是在多个队列管理器组织成分布式队列管理器的时候请设置为1。

相关主题