MQ基础知识及操作指南
- 格式:doc
- 大小:93.50 KB
- 文档页数:11
mq的使用方法(最新版3篇)目录(篇1)1.MQ 简介2.MQ 的使用方法3.MQ 的优点4.MQ 的缺点5.MQ 的未来发展正文(篇1)一、MQ 简介消息队列(Message Queue,简称 MQ)是一种应用程序之间的通信机制,通过将消息发送到队列中,然后再从队列中读取消息,实现异步处理和解耦。
消息队列具有可靠性、灵活性和可扩展性等特点,广泛应用于系统解耦、异步处理、流量削峰等场景。
二、MQ 的使用方法1.选择合适的 MQ 软件:目前市场上有很多优秀的 MQ 软件,如RabbitMQ、Kafka、RocketMQ 等,根据实际需求选择合适的 MQ 软件。
2.搭建 MQ 环境:根据所选 MQ 软件的官方文档,搭建相应的环境,包括安装、配置和启动 MQ 服务。
3.生产者发送消息:生产者通过编写代码将消息发送到队列中,代码中需要引入 MQ 相关的库,并配置相应的生产者信息。
4.消费者接收消息:消费者也需要编写代码从队列中接收消息,同样需要引入 MQ 相关的库,并配置相应的消费者信息。
5.处理消息:消费者接收到消息后,进行相应的业务处理,如数据分析、文件存储等。
三、MQ 的优点1.可靠性:消息队列采用持久化存储,保证了消息的可靠传输。
2.灵活性:消息队列可以方便地进行扩展,支持分布式系统。
3.异步处理:消息队列允许生产者与消费者解耦,提高了系统的并发能力。
4.流量削峰:消息队列可以缓存大量消息,有效解决系统瞬时流量过大的问题。
四、MQ 的缺点1.复杂性:消息队列引入了新的概念和架构,增加了系统的复杂性。
2.维护成本:消息队列需要定期进行维护,如监控、备份和恢复等。
3.学习成本:消息队列技术较为复杂,需要投入较多精力学习和掌握。
五、MQ 的未来发展随着大数据和人工智能技术的发展,消息队列在未来将发挥更大的作用。
同时,随着云计算和容器技术的普及,消息队列将更加便捷地应用于各种场景。
目录(篇2)1.MQ 的概念和作用2.MQ 的基本组件3.MQ 的使用方法4.MQ 的优点和局限性正文(篇2)一、MQ 的概念和作用消息队列(Message Queue,简称 MQ)是一种应用程序之间的通信模式,通过将消息发送到队列中,然后再从队列中读取消息,实现异步处理和解耦。
(转)IBMmq基本使⽤⼀、下载7.5 Trial版本这是下载⽹址,下载前先必须注册IBM ID,下载完成后⼀路Next即可(注:windows上安装时,会询问是否域环境,初次学习时,为简单起见,建议选择No)安装完成后,MQ的Bin⽬录会⾃动添加到环境变量Path中,以后就可以直接⽤Dos命令⾏窗⼝操作(当然,也可以⽤图形化GUI⽅式通过IBM WebSphere MQ Explorer来管理)注:安装时,强烈建议⽤管理员Administrator⾝份安装,否则安装完成后,有可能license⽆法⽣效、runmqsc命令模式下⽆法正常执⾏命令.⼆、创建队列管理器WIN + R键,输⼊cmd,进⼊命令⾏窗⼝,键⼊:crtmqm QM_TEST创建⼀个队列管理器QM_TEST(你可以改成⾃⼰想要的名字),如果把整个MQ理解成⼀个数据库实例,QM_TEST相当于就是db instance中的schema(或user)命令⾏创建的队列管理器默认是不活动状态的,可以⽤strmqm QM_TEST来启动队列管理器三、创建队列如果说“队列管理器”是db中的schema,那么"队列"就相当于db中的Table了,⽽队列中的每条"消息",就相当于Table中的每条记录,继续在命令⾏窗⼝模式下,输⼊runmqsc QM_TEST将进⼊MQ的交互命令模式,继续输⼊define qlocal(Q1)将创建⼀个本地队列Q1(你可以改成⾃⼰需要的名字),如果此时你打开 "开始菜单->程序->IBM WebSphere MQ->WebSphere MQ Explorer (Installation1)"也能同步在图形界⾯下,看到这个队列最后键⼊end,退出MQ的交互命令模式。
四、发送消息继续在Windows命令模式下,输⼊amqsput Q1 QM_TEST这⾥系统将处于等待⽤户输⼊的状态,随便输⼊⼀些消息,然后连敲⼆次回车,完成消息发送五、接收消息amqsget Q1 QM_TEST把刚才的put换成了get,将从队列管理器QM_TEST的队列Q1中,把消息取出来六、进阶指南熟悉以上命令⾏操作后,还可以⽤图形化的操作⽅式再强化⼀遍(建议还是多⽤命令⾏模式,因为有些操作只能⽤命令⾏完成,⽐如后⾯要提到的修改队列管理器编码)WebSphere MQ Explorer中,从"帮助"菜单⾥调出帮助⽂档,⾥⾯有⼀个不错的教程,强烈推荐新⼿看⼀遍不过,"教程2:将消息发送⾄远程队列"这⾥,帮助⽂档上有⼏个细节没讲透,导致初次⽤命令⾏照着做,可能会不成功,⼏个要点如下:1、通道命名问题发送⽅与接收⽅的通道名称,必须⼀样,这样⼆边才能对应起来2、接收⽅必须要有侦听器,⽽且要处于激活状态3、发送⽅的发送通道中,连接名称格式为:"<接收⽅HostName或IP地址>(接收⽅-队列管理器-侦听器的TCP端⼝) ,不包括"<>“,⽐如⽐如:yangjm(1514)或172.12.134.14(1514)4、发送⽅的发送通道必须处于激活状态,如果通道启动失败,尝试右键->ping/复位,如果还不⾏,检查上述要点1-3是否设置有问题七、远程连接问题图形⽅式添加“远程队列管理器”时,如果远程队列也是7.x或以上版本,当前登录⽤户是管理员时,将提⽰权利不⾜,拒绝连接,原因是7.0以上,MQ提⾼了安全性,会默认拦截管理员,详情可参考IBM上的解释解决⽅式:1. 更换当前⽤户,建⼀个mqm⽤户组(MQ安装后,会默认创建该Windows⽤户组)的⽤户,然后以该⽤户⾝份登录操作2.参考IBM上的解释,如果出于学习⽬的,最简单的做法,就是在runmqsc交互模式下,键⼊ALTER QMGR CHLAUTH(DISABLED) 直接关闭通道认证(⽣产环境不推荐这么做)另外,要想本机上的队列能被远程管理,前提是该队列管理器允许远程管理,操作⽅式:队列管理器上右击->选择"远程管理...",接下来的事情⼤家都知道⼋、字符集编码问题每个队列管理器,都有⼀个CCSID的属性,对应的就是字符集编码,在windows系统中,这个编码应该是1381,如果你是⽤其它OS(⽐如linux)的配置通过脚本导⼊MQ的,可能编码就不是1381了,这会导致在windows上⽆法连接\启动队列管理器,可以通过MQ交互命令⾏修改,runmqsc QM_TEST 进⼊QM_TEST的MQ交互模式DISPLAY QMGR CCSID 查看当前的CCSID属性ALTER QMGR CCSID(1381) 修改字符集编码为1381九、如何从“试⽤版”升级成“正式版”试⽤版默认只能⽤90天,到期后,如果购买了正式版的license,可以通过命令⾏导⼊license,命令如下:setmqprd x:\license\amqpcert.lic注:amqpcert.lic中的P即代表这是Product⽣产版本,setmqprd 后⾯的路径即为license⽂件的所在路径⼗、java连接⽰例代码import com.ibm.mq.MQC;import com.ibm.mq.MQEnvironment;import com.ibm.mq.MQException;import com.ibm.mq.MQGetMessageOptions;import com.ibm.mq.MQMessage;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQueue;import com.ibm.mq.MQQueueManager;/** 可以在MQ的资源管理器的某⼀个队列上放⼊测试消息、浏览消息等* 可以放⼊多条消息,按先进先出的⽅式取得*/public class MQTest {private String qManager;// QueueManager名private MQQueueManager qMgr;private MQQueue qQueue;String HOST_NAME;int PORT = 0;String Q_NAME;String CHANNEL;int CCSID;String Msg;public void init() {try {HOST_NAME = "yangjm";//Hostname或IPPORT = 1414;//要有⼀个侦听器,处于活动状态,且监听1414端⼝qManager = "QM_APPLE";Q_NAME = "Q1";//Q1是⼀个本地队列CHANNEL = "DC.SVRCONN";//QM_APPLE上要建⼀个名为DC.SVRCONN的服务器连接通道CCSID = 1381; // 表⽰是简体中⽂,// CCSID的值在AIX上⼀般设为1383,如果要⽀持GBK则设为1386,在WIN上设为1381。
MQ语言简单说明与教程关键字:programtrader MT4 EA MQ MQLⅡ本文来自:程序化交易者() 详细出处参考:/a/MT4/2010/0913/572_3.html“人工智能系统”是一允许客户策划自己的投资交易战略的具有革新性的工具。
人工智能系统是使交易过程操作自动化,使客户从实时市场监控的繁重公事解放出来的系统。
许多专业客户使用多重交易系统以便在不同市场多变的环境下操作。
通常他们在一些知名的分析软件包,如MetaStock 、TradeStation.中撰写和检验他们的投资交易战略。
有了人工智能系统,你就可以将你的真实账户同交易系统产生的信号联系起来,即通过跟踪和管理你任一时点的未平仓合约、下单和止损的记录来建立这种联系。
什么是人工智能系统呢?是用专业的MetaQuotes语言编写的于特定图表联系的自动交易系统(ATS)。
它不仅告知客户交易时机,还自动执行交易账户的交易并将信号直发送到交易服务器。
同大多数IT系统一样,人工智能系统还以历史记录以及表上所反映的交易进出点来测试投资交易战略。
另外,人工智能系统的执行代码是与源程序正文分开保存的。
这种安排确保客户信息的保密性不受爱打听的人的影响。
编写你自己的人工智能系统程序是非常容易的,你不必是专业的程序员,你只要学会一非常简单的语言:MQLⅡ,即便是不懂得如何编写自己的系统程序人通常也可以雇佣他所熟识的精通编程的人来编,这些人可能仅需要不超过一个小时的时间来掌握编程和操作方法。
这里有许多不同的 MetaStock 和 TradeStation 的客户制定的投资交易战略,其中大多数能较容易的转化成MQLⅡ语言,这使用户能吸取以往经验。
在本页就有一些可供下载的“人工智能系统”版本。
环球银行交易平台将人工智能系统设为 *.mql (源程序档用此扩展名)和 *.exp (操作代码用此扩展名)文件存于程序的根目录下的子目录。
客户可以通过 NAVIGATORL浏览窗口管理操作多个(不限数量)的“人工智能系统”。
IBM MQVersion 9.1Quick Start GuideUse this guide to get started with IBM MQ Version 9.1.National Language Version:To obtain the Quick Start Guide in other languages, print the language-specific PDF from the Quick Start DVD.Product overviewIBM ®MQ is robust messaging middleware that simplifies and accelerates the integration of diverse applications and business data across multiple platforms. IBM MQ facilitates the assured, secure and reliable exchange of information betweenapplications, systems, services and files by sending and receiving message data via messaging queues, thereby simplifying the creation and maintenance of business applications. It delivers Universal Messaging with a broad set of offerings to meet enterprise-wide messaging needs, and can be deployed across a range of different environments including on-premise, in cloud environments and supporting hybrid cloud deployments.IBM MQ supports a number of different application programming interfaces (APIs) including Message Queue Interface (MQI),Java ™Message Service (JMS), .NET, IBM MQ Light, MQTT, and the messaging REST API.Product documentation for all supported versions of IBM MQ is available through IBM Knowledge Center(https:///support/knowledgecenter/SSFKSJ). Specifically, the IBM MQ Version 9.1 product documentation is also available in IBM Knowledge Center (/support/knowledgecenter/SSFKSJ_9.1.0/com.ibm.mq.helphome.v91.doc/WelcomePagev9r1.htm).Service and support information is provided in the documentation.Information about how to use MQ Explorer can be accessed either from within MQ Explorer or in the product documentation.3Step 3: Review the installation architectureIBM MQ architectures range from simple architectures that use a single queue manager, to more complex networks of interconnected queue managers. For more information about planning your IBM MQ architecture, see the Planning section of the product documentation in IBM Knowledge Center (https:///support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.pla.doc/q004690_.htm).For links to additional information, see the IBM MQ information roadmap in IBM Knowledge Center(/support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.pro.doc/q123810_.htm).4Step 4: Install the productFor installation instructions for IBM MQ on all supported pltforms, and for details of the hardware and software configurations that are required, see the Installing section of the product documentation in IBM Knowledge Center (https:///support/knowledgecenter/en/SSFKSJ_9.1.0/com.ibm.mq.ins.doc/q008250_.htm).IBM®started quickly.Further scenarios help you to configure or use product features by taking you through the appropriate task steps. The scenarios include links to other content that helps you to gain a better understanding of the area in which you are interested.More informationFor more information about IBM MQ, see the following resources:IBM FAQ for Long Term Support and Continuous Delivery releasesFrom IBM MQ Version 9.0, IBM MQ introduced a Continuous Delivery (CD) support model. Following the initialrelease of a new version, new function and enhancements are made available by incremental updates within thesame version and release. There is also a Long Term Support release available for deployments that requiresecurity and defect fixes only. For more information, see IBM MQ FAQ for Long Term Support and ContinuousDelivery releases (/support/docview.wss?uid=swg27047919).Online product readme fileThe latest version of the online product readme file is available on the IBM MQ product readmes web page(/support/docview.wss?rs=171&uid=swg27006097).IBM Support informationSupport information includes the following resources:v IBM Support web page (https:///support/home/)v IBM Support Assistant (/software/support/isa/)v Social Media Channels within Cloud Technical Support (/support/docview.wss?uid=swg21410956#2IBM MQ Version 9.1 Licensed Materials - Property of IBM. © Copyright IBM Corp. 2006, 2018. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. IBM, the IBM logo, , and Passport Advantage are trademarks or registered trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” (/legal/copytrade.shtml).Part Number:CF4LGMLPrinted in Ireland。
MQ维护与操作MQ维护与操作1.MQ 的⽇志清理MQSeries ⽤错误⽇志记录与MQSeries ⾃⾝运⾏,队列管理器以及通道有关的消息。
因此,错误⽇志对于MQSeries 错误诊断⾮常重要。
AIX 平台上的MQSeries错误⽇志:当队列管理器名称已知,并且队列管理器可⽤时,错误⽇志位于/var/mqm/qmgrs/qmname/errors ⽬录下,如:与MQ 通道有关的消息。
当队列管理器不可⽤时,错误⽇志位于/var/mqm/qmgrs/@SYSTEM/errors ⽬录下;当错误是事务⽇志MQ 的故障维护与Client 应⽤程序有关,错误⽇志位于:/var/mqm/errors ⽬录下。
系统管理员要定期观察错误⽇志,清楚产⽣错误的原因,并根据需要定期清理或备份错误⽇志。
MQSeries 有两种事务⽇志类型:环型⽇志和线型⽇志,所在⽬录为/var/mqm/log环型⽇志预先指定⽇志⽂件的个数,MQ 运⾏时事务⽇志循环使⽤这些⽂件。
环型⽇志的⽇志⽂件所占空间不会增长,也⽆法备份MQ 应⽤系统的映像。
本系统现设计为环型⽇志。
线型⽇志指MQSeries 在运⾏的过程中会随着⽇志记录的增加⽽产⽣新的⽇志⽂件,线型⽇志的可以保证事务运⾏中产⽣的⽇志有⾜够的空间(除⾮⽂件系统空间不⾜),还可以把MQ 应⽤系统的映像备份到⽇志中,在发⽣故障后完整地恢复,线型⽇志⽇志⽂件所占⽤的空间会不断增长,需要系统管理员定期⼿⼯删除过期的⽇志⽂件。
2.如何清除MQ 队列管理器遗留的共享内存和信号量下⾯列出的是⼀段⽤于清除MQSeries 上⼀次遗留的共享内存和信号量的⼩程序。
通常遇到的状况是当启动队列管理器时失败,返回消息AMQ8041,指明以前的进程依然在使⽤中。
解决⽅法:运⾏以下脚本或命令。
ipcs -m| grep mqm | awk '{print $2}'|xargs -i ipcrm -m {}ipcs -s| grep mqm | awk '{print $2}'|xargs -i ipcrm -s {}3.如何解决MQSeries 队列管理器⽆法启动报“AMQ5522”错误当启动MQSeries 队列管理器时,⽆法启动,报“AMQ5522”错误。
交通银行理财产品销售平台MQ操作手册文档修改历史1.MQ配置简介基本规则如下:1)队列管理器与GSP的一个QM建立双向通道,即建立一个发送通道,一个接收通道2)对于单纯的服务请求方,每个系统建立:n个远程队列用于发送报文到GSP,一个本地队列用于接收GSP返回的报文。
(n表示该请求方需要请求的服务个数),BDP系统作为服务请求方,请求核心,即建立一个远程队列,一个本地队列.3)对于单纯服务提供方,每个系统建立2m个队列:m个远程队列用于发送报文到GSP,m个本地队列用于接收GSP返回的报文。
(m表示服务方提供的服务数)BDP系统作为服务提供方,对外提供三个服务,即建立三个本地队列,三个远程队列依照上面规则,配置如下:1.一个队列管理器:MQBDP001。
2.一个传输队列:MQGSPGW1。
3.服务提供方三个本地队列LOCALQ.GSP.BOCOMFUNDACCOUNT.REQLOCALQ.GSP.BOCOMFUNDPRODUCT.REQLOCALQ.GSP.BOCOMFUNDRECONCILIATION.REQ。
4.服务提供方三个远程队列:REMOTEQ.GSP.BOCOMFUNDACCOUNT.RSPREMOTEQ.GSP.BOCOMFUNDPRODUCT.RSPREMOTEQ.GSP.BOCOMFUNDRECONCILIATION.RSP5.服务请求方一个本地队列LOCALQ.GSP.RSP6.服务请求方一个远程队列REMOTEQ.GSP.CBKADAPTER.REQ7.一个死信队列:MQBDP001.DEAD.QUEUE。
8.一个接收通道:MQGSPGW1. MQBDP001。
9.一个发送通道:MQBDP001.MQGSPGW1注:确认小型机的字库Zh_GB和GB18030是否安装。
export是否是LANG=Zh_CN(注意大小写,不是zh_CN)。
如果不是,请修改服务用户的.profile的LANG=Zh_CN。
RabbitMQ⼊门_03_推拉模式我们知道,消费者有两种⽅式从消息中间件获取消息:推模式:消息中间件主动将消息推送给消费者拉模式:消费者主动从消息中间件拉取消息推模式将消息提前推送给消费者,消费者必须设置⼀个缓冲区缓存这些消息。
好处很明显,消费者总是有⼀堆在内存中待处理的消息,所以效率⾼。
缺点是缓冲区可能会溢出。
拉模式在消费者需要时才去消息中间件拉取消息,这段⽹络开销会明显增加消息延迟,降低系统吞吐量。
选择推模式还是拉模式需要考虑使⽤场景。
前⾯ HelloWorld 例⼦中使⽤ Consumer 接⼝的⽅式是推模式。
RabbitMQ 会把队列中的消息全部推送给消费者。
如果删除 Sender 的 sleep 代码⾏,只要 Receiver 连着 hello 队列,你就会发现 hello 队列根本存不住消息,全都发送给了 Receiver,哪怕 Receiver 处理的再慢。
RabbitMQ 同时提供了拉模式,代码如下:gordon.study.rabbitmq.helloworld.ReceiverByGet.javapublic class ReceiverByGet {private final static String QUEUE_NAME = "hello";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);while (true) {GetResponse resp = channel.basicGet(QUEUE_NAME, true);if (resp == null) {System.out.println("Get Nothing!");LISECONDS.sleep(1000);} else {String message = new String(resp.getBody(), "UTF-8");System.out.printf(" [ %2$s<===](%1$s) %3$s\n", "Receiver", QUEUE_NAME, message);LISECONDS.sleep(500);}}}}代码第14⾏通过 basicGet ⽅法,主动去第⼀个参数指定的队列(hello队列)尝试获取⼀个消息,这是⼀个⾮阻塞⽅法,当从队列中获取消息失败时,会返回 null,成功则返回 GetResponse 实例。
MQ的基本概念-ZT1) 队列管理器队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。
2) 消息Messaging means that programs communicate with each other by sending data in messages and not by calling each other directly.在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。
消息有两部分组成:消息描述符(Message Discription或Message Header),描述消息的特征,如:消息的优先级、生命周期、消息Id等;消息描述符(MQMD)也称消息头,应用程序发送信息时,指定要发送的一个应用数据及控制信息MQSeries将控制信息组织成一个MQMD结构加到应用数据上,从而构成一个消息。
MQMD包括如下结构成员:消息类型(MsgType)(1)报文消息(Datagram)不要求响应(2)请求消息(Request)要求响应的消息(3)响应消息(Reply)请求消息的响应消息(4)报告消息(Report)描述时间如发生错误的消息实效时间(Expiry)由应用程序指定,消息在传输过程中、保存在队列中或处理时由队列管理器或应用程序逐步递减。
到零时,由队列管理器负责删除。
优先级(Priority)应用程序指定持续性(Persistence)在队列管理器故障时不会丢失,由消息日至恢复。
消息标识(MsgId)由应用程序或队列管理器生成。
相关标识(CorrelId)用于把一个消息和另一个消息联系起来的标识,由应用程序或队列管理器生成。
应用标识数据(ApplIdentityData)由应用程序将消息放入队列指定。
消息的最大长度为100兆。
MQ通讯机制一.MQ基本操作MQ中有几个很重要的组件:队列管理器(QueueManager)、队列(Queue)和通道(Channel)。
其基本的操作方法如下:创建队列管理器crtmqm –q QMgrName-q是指创建缺省的队列管理器删除队列管理器dltmqm QmgrName启动队列管理器strmqm QmgrName如果是启动默认的队列管理器,可以不带其名字停止队列管理器endmqm QmgrName 受控停止endmqm –i QmgrName 立即停止endmqm –p QmgrName 强制停止显示队列管理器dspmq –m QmgrName运行MQSeries命令runmqsc QmgrName如果是默认队列管理器,可以不带其名字往队列中放消息amqsput QName QmgrName如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字从队列中取出消息amqsget QName QmgrName如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字启动通道runmqchl –c ChlName –m QmgrName启动侦听runmqlsr –t TYPE –p PORT –m QMgrName停止侦听endmqlsr -m QmgrNameMQSeries命令定义死信队列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 PUTDISPLAY 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)修改MQ的字符集(437,1381,891)CCSID:437 = ASCII/GB2312 .CCSID:500 = EBCDIC/IBM935.CCSID:1381 = UNICODErunmqsc 队列管理器名称alter qmgr ccsid(437)end二.配置一个能够通信的远程连接以上讲述了MQ的基本命令操作,但只知道这些是没有实际意义的。
MQ的最终目的是实现远程通信,所以下面就以一个具体的例子来说明如何实现远程连接。
这个例子的目的是建立可以实现消息传递的一对MQ服务器,它们分别基于NT和UNIX平台。
首先在NT端建一队列管理器crtmqm –q QM_NT启动队列管理器strmqm QM_NT运行MQ控制台命令runmqsc QM_NT创建死信队列DEFINE QL(NT.DEADQ) DEFPSIST(YES) REPLACE更改队列管理器属性,设置其死信队列ALTER QMGR DEADQ(NT.DEADQ)创建进程定义DEFINE PROCESS(P_NT)+APPLTYPE(WINDOWSNT)+APPLICID(’ runmqchl -c SDR_NT -m QM_NT’)创建本地传输队列DEFINE QL(QT_NT) USAGE(XMITQ) DEFPSIST(YES) +INITQ(SYSTEM.CHANNEL.INITQ)+PROCESS(P_NT) REPLACE创建远程队列定义,对应于UNIX机器上的本地队列Q_UNIX,传输队列为QT_NTDEFINE QREMOTE(QR_NT)+RNAME(Q_UNIX) RQMNAME(QM_UNIX)+XMITQ(QT_NT)创建发送方通道,其传输队列为QT_NT,远程主机地址为10.10.10.2,侦听端口为1414DEFINE CHANNEL(SDR_NT) CHLTYPE(SDR)+CONNAME(‘10.10.10.2(1414)’) XMITQ(QT_NT) REPLACE 创建服务器连接通道DEFINE CHANNEL(S_NT) CHLTYPE(SVRCONN) REPLACE在UNIX端创建队列管理器crtmqm –q QM_UNIX启动队列管理器strmqm QM_UNIX添加侦听程序修改/etc/services文件,加入一行:MQSeries 1414/tcp #MQSeries channel listener修改/etc/inetd.conf文件,加入一行(启动侦听程序)MQSeries stream tcp nowait mqm /usr/lpp/mqm/bin/amqcrsta amqcrsta –mQM_UNIX运行以下命令,以使修改起作用refresh –s inetd运行MQ控制台命令runmqsc QM_UNIX创建死信队列DEFINE QL(UNIX.DEADQ) DEFPSIST(YES) REPLACE更改队列管理器属性,设置其死信队列ALTER QMGR DEADQ(UNIX.DEADQ)创建接收方通道,其名字必须与远程发送方相同DEFINE CHANNEL(SDR_NT) CHLTYPE(RCVR) REPLACE创建本地队列DEFINE QL(Q_UNIX) DEFPSIST(YES) REPLACE创建服务器连接通道DEFINE CHANNEL(S_UNIX) CHLTYPE(SVRCONN) REPLACE 经过以上操作之后,远程连接的配置工作完成。
接下来需要验证配置是否正确。
在NT端启动发送方通道runmqchl –c SDR_NT –m QM_NT 或 start chl(SDR_NT)从NT端发送消息到UNIX端amqsput QR_NT QM_NT在UNIX端接收消息/usr/mqm/samp/bin/amqsget Q_UNIX QM_UNIX若能收到消息,说明配置成功。
另,在NT下一般情况下在建立队列管理器时会自动建立侦听器,启动队列管理器时则会自动启动侦听程序。
当然也可以手动配置侦听程序。
修改\winnt\system32\drivers\etc\services文件,在文件中加入一行: MQSeries 1414/tcp #MQSeries channel listener启动侦听程序runmqlsr –t tcp –p 1414 –m QM_NT以上说明了怎样建立简单的单向传输网络。
消息从NT端传送到UNIX端。
建立从UNIX端到NT端的远程连接和以上相仿,要建立双向的传输网络也是同样的道理。
三.配置JNDI用JMS实现消息的发送和接收时,经常会用到JNDI。
因为JNDI这种方式比较灵活,对于编程也比较简单。
在安装了MQSeries Client forJava之后,在\java\bin目录下找到JMSAdmin.config文件。
该文件主要用来说明Context的存储方式及存储地址,对应于文件中的两个参数INITIAL_CONTEXT_FACTORY和PROVIDER_URL。
典型的JMSAdmin.config文件内容如下:#INITIAL_CONTEXT_FACTORY=com.sun.jndi.ldap.LdapCtxFactoryINITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFact ory#INITIAL_CONTEXT_FACTORY=InitialContextFa ctory##PROVIDER_URL=ldap://polaris/o=ibm,c=usPROVIDER_URL=file:/d:/temp#PROVIDER_URL=iiop://localhost/#SECURITY_AUTHENTICATION=noneINITIAL_CONTEXT_FACTORY表示JMSAdminTool使用的服务提供商。
当前有三种受支持的值。
com.sun.jndi.ldap.LdapCtxFactory用于LDAP,如果使用它就必须安装一个LDAP服务器。
com.sun.jndi.fscontext.RefFSContextFactory用于文件系统上下文,它只需要使用者提供存放上下文的文件路径。
InitialContextFactory是专门为websphere提供的,它需要和websphere的CosNaming资源库一起使用。