MQ接口使用和开发培训

MQ接口使用和开发培训
MQ接口使用和开发培训

MQ接口使用和开发培训

技术组Z.X.T

V 1.0

内部使用版本(不正确地方请指正)

税库银接口使用和开发培训 (1)

一、介绍websphere MQ (1)

1.MQSeries 和消息队列排队 (1)

a.MQI - 一种公共应用程序编程接口 (2)

b.时间无关的应用程序 (2)

c.驱动处理 (2)

d.数据完整性和资源保护 (2)

2.传输示意图 (2)

3.消息和队列 (3)

a.消息 (3)

b.队列 (4)

c.消息的特点 (4)

d.队列的特点 (4)

二、WebSphere MQ server for WIN 安装 (4)

1.安装流程 (4)

一、安装IBM JDK (4)

二、安装IES (6)

三、安装服务 (7)

2. 补充和关注点 (15)

三、WebSphere MQ for java 的简单例子 (15)

1..需要的java包 (15)

2.调用的两种方式 (15)

一、介绍websphere MQ

1.MQSeries 和消息队列排队

MQSeries 产品使应用程序可使用消息队列排队来参与消息驱动处理。通过消息驱动处理,应用程序可以使用适当的消息排队软件产品在相同或不同平台上进行应用程序彼此之间的通信

a.MQI - 一种公共应用程序编程接口

MQSeries 产品实现了公共应用程序程序设计接口,即消息队列接口(MQI),它可用于应用程序运行的任何平台。由应用程序发出的调用和它们交换的消息是通用的(common)。这使得编写和维护应用程序比使用传统方法更容易。它也方便了消息排队应用程序从一个平台向另一平台的移植

b.时间无关的应用程序

使用消息排队,发送和接收程序之间的消息交换是时间无关的。这表示发送和接收应用程序是独立的,这样发送程序可继续处理而不必等待接收程序收到消息后发出的确认信息。可能在发送程序发出消息时,接收应用程序正处于忙的状态。其实,接收应用程序即便没有在运行也没有关系。MQSeries 一直将消息保存在队列中直到它可被处理。

c.驱动处理

消息驱动处理是一种应用程序设计风格。

用此风格,应用程序被分成几个分离的、不相连的功能块,每个块都有明确定义的输入和输出参数。每个功能块是一个应用程序,通过将值放在消息,再将消息放入队列,实现输入和输出参数与其它应用程序的交换。

通过使用适当的MQSeries 编程机制,一个应用程序可因一个或多个消息到达队列而开始执行。如果需要,程序能够在队列中的所有消息处理完后终止。

这种应用程序设计风格能比其它应用程序设计风格更快速地建立新的应用程序,或修改现存的应用程序。

d.数据完整性和资源保护

MQSeries 应用程序能以非常高的一致性传送数据。

2.传输示意图

IBM提供的示意图(pos机和银行接口)

3.消息和队列

a.消息

消息两部分,消息描述符和应用程序数据。应用程序数据的内容和结构由使用它们

的应用程序来定义。消息描述符标识消息并包含了其它控制信息或属性,如创建消息的日期

和时间、消息类型及由发出消息的应用程序为消息分配的优先级

b.队列

在物理概念上,一个队列就是一种类型的列表,用来存储消息直到它们被应用程序取走。

队列独立于使用它们的应用程序而存在。一个队列可以存在于:

如果队列是临时的,那么保存在主存储器中

如果必须保存该队列以便故障时恢复,那么保存在磁盘或类似的辅助存储器上

如果正在使用队列,并且必须保存该队列以便故障时恢复,那么同时保存在上述两种存储器上

每个队列属于一个队列管理器,它负责队列的维护。队列管理器将它检索到的消息放到适当的队列中。

队列可位于您的本地系统上,这种情况下它们被称为本地队列;也可位于其它队列管理器上,这时则被称为远程队列。

在MQSeries 中,消息可被经适当授权的应用程序从队列中检索,且遵循下列检索算法:

先进先出(FIFO)。

消息优先级(在消息描述符中定义)。具有同一优先级的消息以FIFO 的原则被检索。

一个程序请求特定的消息

c.消息的特点

消息的大小

最大消息长度

消息分段

引用消息

d.队列的特点

消息队列

事件队列

启动队列

传输队列

接受应答队列

死信队列

二、WebSphere MQ server for WIN 安装

1.安装流程

选择所有的文件安装在d盘目录下,以下所有的操作以此目录为依据。

一、安装IBM JDK

此步骤可省略

在光盘的Prereqs\JDK目录下,点击ibm-java2-sdk-142.exe 进行安装

选择中文

选择目录

选择默认安装,等待结束

二、安装IES

IES 及为插肩式ecilpse 用来做MQ的管理用,必须在安装server之前进行

选择语言

下一步

再下一步

等待结束。

三、安装服务

安装服务并没有创建Active Directory,所以查看“软件需求”处没有问题以后就可以进行安装了

下一步

选择为“定制”

设定目录

选择功能

安装等待

安装完成并打开管理器

配置一个测试QM_APPLE

配置一个队列

进行JMS以及for java的设置

修改JMSAdmin.config中INITIAL_CONTEXT_FACTORY以及PROVIDER_URL

修改JMSAdmin.bat 配置好lib包,用来配置jndi用

执行配置jndi

以上为简单配置命令,详细输入命令请查看命令文档,

查看当前字符集,此字符集可在安装的时候生成,或安装重新设定

启动publish/subscribe代理

2. 补充和关注点

1.安装时候点setup出错AMQ4739,请用

\setup.exe -a AMQSERVICESHIPLEVEL="2.1"

三、WebSphere MQ for java 的简单例子

1..需要的java包

Com.ibm.mq.jar --MQ base

Com.ibm.mqjms.jar --MQ JMS

CL3Export.jar --publish/subscribe

CL3Nonexport.jar

dhbcore.jar

Rmm.jar

Connector.jar (version 1.0)

Fscontext.jar (version 1.2)

Jms.jar (version 1.1)

Jndi.jar (version 1.2.1)

Jta.jar (version 1.0.1)

Ldap.jar (version 1.2.2)

Providerutil.jar (version 1.2)

2.调用的两种方式

通过调用MQI的方式TCP/IP连接作为MQ 的client

通过调用通用接口JMS的方式连接JNDI到MQ

简单的代码(采用IBM提供的java例子)

JmsUtils.java

package com.ibm.examples;

import java.util.Properties;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

public class JmsUtils {

private static final String CF_CLASS_NAME =

"com.ibm.mq.jms.context.WMQInitialContextFactory";

private static final String WMQ_URL = "localhost:1414/SYSTEM.DEF.SVRCONN";

protected Context getInitialContext() throws NamingException {

Properties props = new Properties();

props.put(Context.INITIAL_CONTEXT_FACTORY, CF_CLASS_NAME);

props.put(Context.PROVIDER_URL, WMQ_URL);

return new InitialContext(props);

}

}

P2Putils.java

package com.ibm.examples;

import javax.jms.JMSException;

import javax.jms.Queue;

import javax.jms.QueueConnection;

import javax.jms.QueueConnectionFactory;

import javax.naming.Context;

import javax.naming.NamingException;

public class P2PUtils extends JmsUtils {

private static final String QCF_NAME = "SampleQCF";

private static final String QUEUE_NAME = "SampleQueue";

public QueueConnection getConnection()

throws NamingException, JMSException {

Context context = getInitialContext();

QueueConnectionFactory qcf =

(QueueConnectionFactory) context.lookup(QCF_NAME);

return qcf.createQueueConnection();

}

public Queue getQueue() throws NamingException {

Context context = getInitialContext();

return (Queue) context.lookup(QUEUE_NAME);

}

}

PubSubUtils.java

package com.ibm.examples;

import javax.jms.JMSException;

import javax.jms.Topic;

import javax.jms.TopicConnection;

import javax.jms.TopicConnectionFactory;

import javax.naming.Context;

import javax.naming.NamingException;

public class PubSubUtils extends JmsUtils {

private static final String TCF_NAME = "SampleTCF";

private static final String TOPIC_NAME = "SampleTopic";

public TopicConnection getConnection()

throws NamingException, JMSException {

Context context = getInitialContext();

TopicConnectionFactory qcf =

(TopicConnectionFactory) context.lookup(TCF_NAME);

return qcf.createTopicConnection();

}

public Topic getTopic() throws NamingException {

Context context = getInitialContext();

return (Topic) context.lookup(TOPIC_NAME);

}

}

StandalonePublisher.java

package com.ibm.examples;

import java.io.IOException;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.Session;

import javax.jms.TopicConnection;

import javax.jms.TopicPublisher;

import javax.jms.TopicSession;

import javax.naming.NamingException;

public class StandalonePublisher {

private PubSubUtils utils;

private TopicConnection connection;

private TopicSession session;

private TopicPublisher publisher;

public static void main(String[] args)

throws NamingException, JMSException, IOException {

StandalonePublisher publisher = new StandalonePublisher();

publisher.connect();

String message = "ignored";

while (message.length() > 0) {

byte[] input = new byte[40];

System.out.print("Enter a message: ");

System.in.read(input);

message = (new String(input, 0, input.length)).trim();

if (message.length() > 0)

publisher.sendMessage(message);

}

publisher.disconnect();

}

private StandalonePublisher() {

utils = new PubSubUtils();

}

private void connect() throws NamingException, JMSException {

connection = utils.getConnection();

session =

connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

publisher = session.createPublisher(utils.getTopic());

System.out.println("Publisher started.");

}

private void sendMessage(String text) throws JMSException { Message message = session.createTextMessage(text);

publisher.publish(message);

System.out.println(

"Published message <"

+ text

+ "> with ID <"

+ message.getJMSMessageID()

+ ">");

}

private void disconnect() throws JMSException {

publisher.close();

session.close();

connection.close();

System.out.println("Publisher stopped.");

}

}

StandaloneReceiver.java

package com.ibm.examples;

import java.io.IOException;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.QueueConnection;

import javax.jms.QueueReceiver;

import javax.jms.QueueSession;

import javax.jms.Session;

import javax.jms.TextMessage;

import javax.naming.NamingException;

public class StandaloneReceiver implements MessageListener {

private P2PUtils utils;

private QueueConnection connection;

private QueueSession session;

private QueueReceiver receiver;

public static void main(String[] args)

throws NamingException, JMSException, IOException {

StandaloneReceiver receiver = new StandaloneReceiver();

receiver.connect();

System.in.read();

receiver.disconnect();

}

private StandaloneReceiver() {

utils = new P2PUtils();

}

private void connect() throws NamingException, JMSException {

connection = utils.getConnection();

session =

connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

receiver = session.createReceiver(utils.getQueue());

receiver.setMessageListener(this);

connection.start();

System.out.println("Receiver started.");

}

public void onMessage(Message message) {

try {

TextMessage tMessage = (TextMessage) message;

String text;

text = tMessage.getText();

System.out.println(

"Received message <"

+ text

+ "> with ID <"

+ message.getJMSMessageID()

+ ">");

} catch (JMSException e) {

e.printStackTrace();

}

}

private void disconnect() throws JMSException {

receiver.close();

session.close();

connection.stop();

connection.close();

System.out.println("Receiver stopped.");

MQ基础知识及操作指南

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 QmgrName MQSeries命令 定义死信队列 DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE 设定队列管理器的死信队列 ALTER QMGR DEADQ(QNAME) 定义本地队列 DEFINE QL(QNAME) REPLACE 定义别名队列

MQ通道的维护及常用命令

WebShpere MQ入门教程(20):MQ通道的维护 AIXWebsphereHPLinuxOS 6.3.1通道的状态 下图显示了所有可能的通道状态层次结构,在WebSphere MQ for AIX, iSeries, HP-UX, Linux, Solaris, 和Windows systems, 和 WebSphere MQ V5.1 for OS/2 Warp平台,这些状态对服务器连接通道也适用。 图,通道状态 如果通道的状态分为inactive和current两大类;“current”可以是Stopped,Starting,Retrying和Active的情况。通道Acitve的情况又可分为Initializing,Binding,Requesting,Running,Paused或Stopping的状态。 下图显示通道状态之间的变化关系。

注意: 1. 当通道处于INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or 或STOPPING状态时,这将消耗系统资源,并且通道的进程或线程正在运行;因为通道是Active状态。 2. 当通道是STOPPED状态时, 会话可能是active,因为下一个状态时未知的。 6.3.2通道维护命令 下面将详细地介绍通道有关的维护命令。 创建通道 为创建一个新通道,您需要创建两个通道定义,在通信的双方各定义一个。这两个通道的名字必须时相同的,而且两端的通道类型必须匹配,例如:发送和接收。可以使用MQSC命令“DEFINE CHANNEL”来创建通道,在命令中需要指定通道名,通道类型,连接名,通道描述(可选),传输队列名(可选)和传输协议,等还有许多可选的属性可以设置。

WebSphere MQ 命令

附录WebSphere MQ 命令一览表 队列管理器(Queue Manager) crtmqm 创建队列管理器(Create Queue Manager) [-c Text] 描述,最多64 个字符 [-d DefaultTransmissionQueue] 缺省传输队列 [-h MaximumHandleLimit] 一个应用程序可以MQOPEN 的最大句柄数min=1,max=999,999,999,default=256 [-lc | -ll] Log 类型 -lc Circular Logging,环型日志 -ll Linear Logging,线型日志 [-ld LogPath] Log 文件的目录,mqm 用户必须有访问权限,缺省为:Windows X:\Program Files\IBM\WebSphere MQ\log\qmgr UNIX /var/mqm/log [-lf LogFileSize] Log 文件大小,4KB 的倍数. Windows min=32,max=16,384,default=256 (1 MB) UNIX min=64,max=16,384,default=1024 (4 MB) [-lp LogPrimaryFiles] 主Log 文件数量,min=2,max=62,default=3 [-ls LogSecondaryFiles] 备用Log 文件数量,min=1,max=61,default=2 注意:LogPrimaryFiles + LogSecondaryFiles <= 63 [-q] 缺省队列管理器 [-g ApplicationGroup] 应用组。Application Group 中的用户可以运行MQI 应用,更新IPCC 资源,改变Queue Manager 目录中的内容。 仅对WMQ for AIX,Solaris,HPUX,Linux 有效。会反 映到qm.ini 中。mqm 必须是Application Group 中的 用户。缺省-g all [-t IntervalValue] min=0,max=999,999,999,default=999,999,999,单位: 毫秒。触发间隔(Trigger Time Interval) [-u DeadLetterQueue] 死信队列(Dead Letter Queue)) [-x MaximumUncommittedMessages] 最大的未提交的消息数量 min=1,max=999,999,999,default=10,000 在一个交易中的消息最大数量,为MQPUT + MQGET + LUW 中 产生的Trigger Message 数量之和 [-z] 抑止出错信息 QMgrName 队列管理器名 例: crtmqm -t 5000 -u SYSTEM.DEAD.LETTER.QUEUE -ll QM dltmqm 删除队列管理器(Delete Queue Manager) [-z] 抑止出错信息 QMgrName 队列管理器名 例: dltmqm -z QM strmqm 启动队列管理器(Start Queue Manager) [-c] 启动队列管理器,覆盖重建所有的系统对象,再停止该队列管理器

MQ通道的维护及常用命令

M Q通道的维护及常用命 令 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

6.3.1通道的状态 下图显示了所有可能的通道状态层次结构,在 MQ for AIX, iSeries, HP-UX, , Solaris, 和 systems, 和 WebSphere MQ for OS/2 Warp平台,这些状态对连接通道也适用。 ? 图,通道状态 如果通道的状态分为inactive和current两大类;“current”可以是Stopped,Starting,Retrying和Active的情况。通道Acitve的情况又可分为Initializing,Binding,Requesting,Running,Paused或Stopping的状态。下图显示通道状态之间的变化关系。 ?

注意: 1. 当通道处于INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or 或STOPPING状态时,这将消耗系统,并且通道的进程或线程正在运行;因为通道是Active状态。 2. 当通道是STOPPED状态时, 会话可能是active,因为下一个状态时未知的。 下面将详细地介绍通道有关的维护命令。

创建通道 为创建一个新通道,您需要创建两个通道定义,在通信的双方各定义一个。这两个通道的名字必须时相同的,而且两端的通道类型必须匹配,例如:发送和接收。可以使用MQSC命令“DEFINE CHANNEL”来创建通道,在命令中需要指定通道名,通道类型,连接名,通道描述(可选),传输队列名(可选)和传输协议,等还有许多可选的属性可以设置。 注意: 建议在WebSphere MQ的网络中所有的通道名唯一,并且通道名中最好包含了源队列器名和目标队列管理器名。 创建通道的例子 PE(SDR) + DESCR(’Sender channel to QM2’) + CONNAME(QM2) TRPTYPE(TCP) XMITQ(QM2) CONVERT(YES) I 修改通道 可以使用 MQSC命令“ALTER CHANNEL”来修改现有通道定义,但是通道名和通道类型不能修改。 删除通道 可以使用 MQSC命令“DELETE CHANNEL”来删除现有通道定义。 查看通道定义 可以使用 MQSC命令“DISPLAY CHANNEL”来查看现有通道定义。可以说明通道名,通道类型(可选),和其它属性,或查看所有的属性。

IBM mq 常用命令

IBM MQ常用命令 常用命令 创建队列管理器 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 QmgrName MQSeries命令 定义死信队列 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’)

MQ通道的维护及常用命令精选文档

M Q通道的维护及常用 命令精选文档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

6.3.1通道的状态 下图显示了所有可能的通道状态层次结构,在 MQ for AIX, iSeries, HP-UX, , Solaris, 和 systems, 和 WebSphere MQ for OS/2 Warp平台,这些状态对连接通道也适用。 图,通道状态

如果通道的状态分为inactive和current两大类;“current”可以是Stopped,Starting,Retrying和Active的情况。通道Acitve的情况又可分为Initializing,Binding,Requesting,Running,Paused或Stopping的状态。 下图显示通道状态之间的变化关系。

注意: 1. 当通道处于INITIALIZING, BINDING, REQUESTING, RUNNING, PAUSED, or或STOPPING状态时,这将消耗系统,并且通道的进程或线程正在运行;因为通道是Active状态。 2. 当通道是STOPPED状态时, 会话可能是active,因为下一个状态时未知的。 通道维护命令 下面将详细地介绍通道有关的维护命令。 创建通道 为创建一个新通道,您需要创建两个通道定义,在通信的双方各定义一个。这两个通道的名字必须时相同的,而且两端的通道类型必须匹配,例如:发送和接收。可以使用MQSC命令“DEFINE CHANNEL”来创建通道,在命令中需要指定通道名,通道类型,连接名,通道描述(可选),传输队列名(可选)和传输协议,等还有许多可选的属性可以设置。

MQ常用命令

1.查看所有队列管理器dspmq 查看所有的通道dis chl(name)/dis chl(*)/dis chl(*) all/dis channel(name) 查看通道状态dis chs(name)/dis chs(*)/dis chs(*) all 查看队列display queue(name) 查看队列管理器信息(包括CCSID等信息)dis qmgr 启动队列管理器runmqsc 队列管理器——name 2.重置通道序号reset chl(通道name) seqnum(1) 3.一段时间没有消息,通道会变为不活动状态,有消息时通道会变为running状态 4.查看队列里面是否有消息dis ql('队列名称') curdepth 5.日志目录:MQ安装目录/qmgrs/队列管理器名/errors/AMQERR01.LOG 6.修改ccsid alter qmgr ccsid(“XXX”) 一、MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中。 1、MQ的启动 strmqm QMgrName 如果启动默认队列管理器,strmqm后可以忽略队列管理器名称。 在意外情况停止队列管理器后,启动可能会失败,此时可以检查上次停止后是否有IPC资源未释放,若有请予以删除,删除方法参考下面的“C.清理所有残留在系统内部的信号灯和共享内存”。 2、MQ的关闭 一般情况下,我们使用“endmqm -i QMgrName”来停止mq,如果停止失败,可以使用如下步骤: 步骤1:endmqm -p QMgrName,如果停不掉,继续步骤2; 步骤2:杀死有关进程,清理残留在系统内部的信号灯和共享内存 A.找到队列管理器程序进程 ps -ef|grep QMgrName B.使用kill命令终止1>中找到的程序进程,无法停止的进程可以用kill -9来终止,终止进程的顺序如下(不存在的进程可以忽略): kill amqpcsea 命令服务器 kill amqhasmx 记录器 kill amqharmx 日志格式化器(仅LINEAR日志) kill amqzllp0 检查点处理器 kill amqzlaa0 队列管理器代理 kill amqzxma0 处理控制器 kill amqrrmfa 库进程(用于群集) C.清理所有残留在系统内部的信号灯和共享内存(其属主和组均为mqm) ipcs -s| grep mqm | awk '{print $2}'|xargs -i ipcrm -s {} ipcs -m| grep mqm | awk '{print $2}'|xargs -i ipcrm -m {}

mq操作命令

1. 启动命令行QMEMBFE是QM名字 runmqsc QMEMBFE (进入MQ的命令行) 显示队列DISPLAY QUEUE(*) 显示通道DISPLAY CHANNEL(*) 显示侦听器DISPLAY LISTENER(*) SDR发送方通道,RCVR接收方通道 2. 创建MQM crtmqm -lf 16384 -lp 10 -ls 10 QMEMBFE 3. 启动MQM strmqm QMEMBFE 3.1删除MQM Dltmqm QMEMBFE Start chl(通道名) 启动通道 4. 运行脚本 runmqsc QMEMBFE < mbfemq.sc 5. 确定测试商业银行所对应接入点的通道状态是否为running #runmqsc QMEMBFE dis chs(5012900001.GW2900) dis chs(GW2900.5012900001) dis chstatus(ChannelName) 查看通道状态 dis chs(5012900001.GW2900) 1 : dis chs(5012900001.GW2900) AMQ8420: 通道状态未找到。 dis chs(GW2900.5012900001) 2 : dis chs(GW2900.5012900001) AMQ8417: 显示通道状态细节。 CHANNEL(GW2900.5012900001) CHLTYPE(RCVR) CONNAME(172.26.190.4) CURRENT RQMNAME(QME2900) STATUS(RUNNING) SUBSTATE(RECEIVE) XMITQ( ) 172.26.190.4 1418 1. 创建队列管理器 crtmqm -q QMA (-q表示QMA为默认队列管理器)

ibm mq常用命令

创建队列管理器 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 QmgrName MQSeries命令 定义死信队列 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 创建进程定义

MQ常用命令

物理定义 ################################################## --查看MQ版本-- dspmqver --查看队列状态-- dspmq --创建队列管理器-- crtmqm -q ECIS_QM --删除队列管理器-- dltmqm ECIS_QM --启动队列管理器-- strmqm ECIS_QM --关闭队列管理器-- endmqm -i ECIS_QM 立即停止 endmqm -p ECIS_QM 强制停止 --运行队列管理器-- runmqsc ECIS_QM --定义监听器-- DEFINE LISTENER(LSR_4_ECIS_QM) TRPTYPE(TCP) PORT(1616) CONTROL(QMGR) REPLACE START LISTENER(LSR_4_ECIS_QM) --定义通道-- DEFINE CHANNEL(ECIS.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm') REPLACE --启动通道-- runmqchl –c ChlName –m ECIS_QM --启动侦听-- runmqlsr –t TCP –p 1616 –m ECIS_QM endmqlsr -m ECIS_QM --定义队列-- DEFINE QL(Q_SVC2ADP_4_TELNET) REPLACE DEFINE QL(Q_SVC2ADP_4_JDBC) REPLACE DEFINE QL(Q_SVC2ADP_4_HTTP) REPLACE DEFINE QL(Q_SVC2ADP_4_SOCKET) REPLACE --删除队列--

IBM MQ常用命令

1. 队列管理器 1.1. 创建队列管理器 命令:crtmqm 示例: 1.2. 启动队列管理器 命令:strmqm 停止队列管理器 命令:endmqm -c|-w|-i|-p 参数说明: -c 受控关闭(或停顿关闭)。这是缺省值。 队列管理器停止,但仅当所有应用程序已断开连接后才停止。当前正在处理的任何MQI 调用已完成。 立即将控制权返回给您,并且不通知您队列管理器是何时停止的。 对通过服务器连接通道连接的任何客户机应用程序的影响等效于以QUIESCE 方式发出的STOP CHANNEL 命令。 -w 等待关闭。 此类型的关闭等效于受控关闭(除了仅当队列管理器已停止后才将控制权返回给您之外)。当执行关闭时,您将接收到消息:等待队列管理器qmName 结束。 对通过服务器连接通道连接的任何客户机应用程序的影响等效于以QUIESCE 方式发出的STOP CHANNEL 命令。 -i 立即关闭。队列管理器在完成所有当前正在处理的MQI 调用后停止。任何在该命令发出后发出的MQI 请求都将失败。当队列管理器再次启动时,任何未完成的工作单元将回滚。 队列管理器结束后返回控制权。 对通过服务器连接通道连接的任何客户机应用程序的影响等效于以FORCE 方式发出的STOP CHANNEL 命令。 -p 抢先关闭。 仅在意外情况下使用此类型的关闭。例如,当队列管理器在常规 endmqm 命令下未停止。 队列管理器可以停止而不等待应用程序断开连接或MQI 调用完成。这可能会产生WebSphere MQ 应用程序的不可预测的结果。关闭方式设置为立即关闭。如果队列管理器稍后未停止,关闭方式将升级,且终止所有剩余的的队列管理器进程。 对通过服务器连接通道连接的任何客户机应用程序的影响等效于以TERMINATE 方式发出的 STOP CHANNEL 命令。

常用MQ命令

常用的MQ命令 最近在配置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

MQ命令

MQ命令.txt两个男人追一个女人用情浅的会先放弃。两个女人追一个男人用情深的会先放弃。╰︶ ̄—你的话,我连标点符号都不信男女授受不亲,中国哪来13亿人口。================================================== ---------队列管理器------------------------------- ================================================== 1、通过输入以下命令来创建名为 QM_APPLE 的缺省队列管理器: crtmqm -q QM_APPLE 此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。 ***启动队列管理器: 通过输入以下命令来启动此队列管理器(因为新创建的队列管理器还没有启动): strmqm 此时会显示一条消息,告诉您何时启动了该队列管理器。 注:如果启动指定的队列管理器则用strmqm QM_APPLE,如果是启动默认的队列管理器,可以不带其名字 -q是指创建缺省的队列管理器 注:删除队列管理器:dltmqm QM_APPLE **停止队列管理器 endmqm QmgrName 受控停止 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 **显示队列管理器 dspmq –m QmgrName 运行MQ命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名字 注:dspmq 则是显示所有的队列管理器 ================================================== ---------MQ命令------------------------------- ================================================== 运行MQ命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名字 输入end命令来停止 MQSC:

MQ测试常用命令

测试1 本地通道测试 1、使用mqadmin用户登录 2、执行crtmqm -q TEST_QM,建立测试用的消息管理器。 3、执行strmqm TEST_QM,启动测试用的消息管理器。 4、执行runmqsc TEST_QM 5、输入define ql(DATA),回车,建立本地队列DATA 6、输入end回车 至此,本地测试通道搭建完成,下面进行测试。 1、执行amqsput DATA TEST_QM 2、随便输入一些内容,一行为一条消息,可输入多条。 3、输入完毕连续按两次回车退出。 4、执行amqsget DATA TEST_QM,看看能否收到刚才输入的消息,如果能收到,证明MQ 本地通道是正常的。如果收不到,则MQ安装有问题。 测试2 远程通道测试 如果测试1通过,继续进行远程通道测试。 1、执行runmqsc TEST_QM 2、输入define chl(TO.TEST) chltype(RCVR) trptype(tcp),创建接收方通道。 3、输入end并回车。 4、执行crtmqm TEST_RQM,建立模拟的远程通道。 5、执行strmqm TEST_RQM 6、执行runmqsc TEST_RQM 7、输入define ql(TEST) usage(xmitq) 8、输入define qr(REMOTE.DA TA) rname(DATA) rqmname(TEST_QM) xmitq(TEST) 9、输入define chl(TO.TEST) chltype(sdr) conname('127.0.0.1(1111)') xmitq(TEST) trptype(tcp),创建发送方通道。 10、输入end 11、执行runmqlsr -t tcp -m TEST_QM -p 1111,启动接收方的监听。 12、新打开一个telnet会话,用mqadmin登录,执行runmqsc TEST_RQM 13、输入start chl(TO.TEST) 14、输入end 至此,模拟的远程测试通道建立完成,以下进行测试。 1、执行amqsput REMOTE.DATA TEST_RQM 2、随便输入一些内容,一行为一条消息,可输入多条。 3、输入完毕连续按两次回车退出。 4、执行amqsget DATA TEST_QM,看看能否收到刚才输入的消息,如果能收到,证明MQ 本地通道是正常的。如果收不到,则MQ安装有问题。

MQ常用命令与实操练习

一、队列管理器常用操作命令 1、通过输入以下命令来创建名为 QM_APPLE 的缺省队列管理器: crtmqm -q QM_APPLE 此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。 ***启动队列管理器: 通过输入以下命令来启动此队列管理器(因为新创建的队列管理器还没有启动): strmqm QmgrName 此时会显示一条消息,告诉您何时启动了该队列管理器。QmgrName 为需要启动的队列管理器名称。 注:如果启动指定的队列管理器则用strmqm QM_APPLE,如果是启动默认的队列管理器,可以不带其名字 -q是指创建缺省的队列管理器 注:删除队列管理器:dltmqm QM_APPLE **停止队列管理器 endmqm QmgrName 受控停止 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 **显示队列管理器 dspmq –m QmgrName 运行MQ命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名字 注:dspmq 则是显示所有的队列管理器

二、队列管理器对象常用操作命令(MQSC) MQSC命令是用来管理队列管理器对象,包括队列管理器本身、通道、队列和进程定义。可以使用runmqsc QmgrName向队列管理器QmgrName发出 MQSC 命令。命令的输入有两种方式,一种是交互式命令,另一种是从ASCII 文本文件中重定向输入命令。在这两种方式中,命令的格式是相同的。 运行MQSC命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名字 输入end命令来停止 MQSC: ***队列管理***** 1:创建本地队列: define qlocal (Q1) replace 注:定义持久性队列: DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE 如果已经定义好了队列,但需要修改该队列的属性,可以使用later命令操作。如,现在将已经定义好的队列Q1定义为持久性队列可以做如下操作: ALTER QLOCAL (Q1) DEFPSIST (YES) 可使用alter ?察看可修改对象,再用 alter 对象名?察看可修改对象的参数。 2:往队列中放消息 amqsput QName QmgrName 如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字 比如:amqsput Q1 QM_APPLE 3:从队列中取出消息 amqsget QName QmgrName 如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字 注:在运行该命令时,不要先运行 runmqsc等。。而是在普通的命令窗口,启动MS-DOS窗口,进入到c:\Program Files\IBM\WebSphere MQ\bin目录下,需要根据实际情况填写安装目录。 4:清除队列中的所有消息

MQ日常维护文档

MQ日常维护文档

一. 简介 (3) 1. MQ目录结构 (3) 二. 常用MQ系统命令 (3) 1. 观察MQ队列管理器运行状态 (3) 三. 使用MQSC脚本命令管理 (4) 1. 进入指定队列管理器脚本命令控制台 (4) 2. 常用MQSC脚本命令 (4) 查看所有通道状态 (4) 检查通道具体状态 (4) 检查队列配置和深度 (4) 四. 维护项目 (4) 1. 实时监控以下文件系统使用情况: (4) 2. 定期报告MQ系统错误,备份清理MQ系统错误记录 (5) 3. 监控队列深度 (5) 4. 检查死信队列 (5) 5. 检查日志个数是否增长 (5) 6. 检查MQ队列管理器错误日志 (5) 7. 清理队列管理器IPC资源............................................................. 错误!未定义书签。 8. 检查、处理队列管理器pending事务 (6)

一.简介 1. MQ目录结构 MQ系统错误记录目录: /var/mqm/errors MQ队列管理器目录(缺省情况下) /var/mqm/qmgrs/ 注意:必须保证该目录下的任何文件不被修改,不被删除,否则MQ队列管理器将遭到致命破坏,无法恢复,本地消息全部丢失。 二.常用MQ系统命令 1. 观察MQ队列管理器运行状态 对于MQ 5.1及以下版本,通过ps –ef | grep 看下面进程是否存在:#amqzxma0 -m 对MQ 5.2或以上版本,执行如下命令检查队列管理器运行状态: #dspmq 显示结果中表示MQ队列管理器的名称,STATUS表示当前运行状态。 运行状态有: Starting 正在启动 Running 正在运行 Ending 正在停止 Ended normally 已经正常终止 Ended immediately 已经立即终止 Ended preemtively 已经强制终止 Ended unexpectively 异常终止 注意:停止系统后必须使用dspmq命令进行状态检查 例: $dspmq 显示结果

MQ常用命令

创建队列管理器 crtmqm qmgrname 删除队列管理器 dltmqm [-z] qmgrname 启动队列管理器 strmqm qmgrname 停止队列管理器 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 显示队列管理器 dspmq 查看全部队列 dspmq -m qmgrname ----显示具体的队列管理器 启动代理: strmqbrk -m GCP_QM 启动监听器 runmqlsr -m qmgrname -p port -t tcp exp runmqlsr -m GCP_QM -p 1414 -t tcp & 停止监听 endmqlsr -m qmgrname 选择队列管理器 runmqsc Qmgrname 退出队列管理器 end 显示队列属性 DISPLAY QLOCAL (Q)

查看全部队列 dis q(*) AIX查看系统版本: lslpp -ah mqm.server.rte linux查看系统版本: rpm -qa |grep mq endmqm QmgrName 受控停止 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 dis qmgr 查看队列管理器属性 dis q(GCP_NOTIFY_Q_RECOL) 显示全部属性 dis qs(GCP_NOTIFY_Q_RECOL) 显示主要属性 修改队列属性 ALTER QMGR CCSID (1381) 定义队列属性 DEFINE CHANNEL (C) CHLTYPE (SDR) CONNAME ('127.0.0.1 (1414)') XMITQ (XQ) exp define channel(CH1) chltype(SVRCONN) trptype(TCP) mcauser('mqm') 创建本地队列 define qlocal(QueueName) 修改队列属性 alter qlocal(Qname) maxdepth(5)

消息中间件MQ常用命令

WebShpere 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) +

MQ常用命令1

MQ常用命令创建队列管理器 crtmqm qmgrname 删除队列管理器 dltmqm [-z] qmgrname 启动队列管理器 strmqm qmgrname 停止队列管理器 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 显示队列管理器 dspmq 查看全部队列 dspmq -m qmgrname ----显示具体的队列管理器 启动代理: strmqbrk -m GCP_QM 启动监听器

runmqlsr -m qmgrname -p port -t tcp exp runmqlsr -m GCP_QM -p 1414 -t tcp & 停止监听 endmqlsr -m qmgrname 选择队列管理器 runmqsc Qmgrname 退出队列管理器 end 显示队列属性 DISPLAY QLOCAL (Q) 查看全部队列 dis q(*) AIX查看系统版本: lslpp -ah mqm.server.rte linux查看系统版本:

rpm -qa |grep mq endmqm QmgrName 受控停止 endmqm –i QmgrName 立即停止 endmqm –p QmgrName 强制停止 dis qmgr 查看队列管理器属性 dis q(GCP_NOTIFY_Q_RECOL) 显示全部属性 dis qs(GCP_NOTIFY_Q_RECOL) 显示主要属性 修改队列属性 ALTER QMGR CCSID (1381) 定义队列属性 DEFINE CHANNEL (C) CHLTYPE (SDR) CONNAME ('127.0.0.1 (1414)') XMITQ (XQ) exp define channel(CH1) chltype(SVRCONN) trptype(TCP)

相关主题
相关文档
最新文档