`
weitao1026
  • 浏览: 1043756 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MQ的使用

 
阅读更多
安装环境:linux redhat
activemq版本:5.8.0
1.从http://activemq.apache.org/download.html地址下载apache-activemq-5.8.0-bin.tar.gz包
2.解压缩到指定的目录
tar zxvf apache-activemq-5.8.0-bin.tar.gz -C /usr/local  
解压缩后会在/usr/local下生成apache-activemq-5.8.0目录,其中bin目录下就是activeMQ的执行脚本存在的位置了。
3.如果启动脚本无法执行,我们需要修改一下权限
cd /usr/local/apache-activemq-5.8.0/bin  
chmod 775 activemq  
4.设置activeMQ配置环境.activemqrc
bin/activemq setup ~/.activemqrc  
5.启动activeMQ
在activemq主目录键入如下命令: 
bin/activemq start  
然后会看到控制台日志输出如下:
INFO: Loading '/home/chenzhou/.activemqrc'  
INFO: Using java '/usr/java/jdk1.6.0_03/bin/java'  
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details  
INFO: pidfile created : '/usr/local/apache-activemq-5.8.0/data/activemq-localhost.localdomain.pid' (pid '18567')  
我们也可以把日志输出到指定的日志文件中
bin/activemq start > /tmp/smlog  2>&1 &  
然后日志就输出到/tmp/smlog文件中了
注意:官方文档中标明了如果按上述的方式启动后,如果我们把linux终端窗口关闭的话,则服务也会停止
具体如下:
 
不过,我尝试了一下关闭xshell终端,貌似服务依然正在,没有退出。
不过为了保险起见,我们在启动时最好还是加上nohup参数
启动命令如下:
nohup bin/activemq start  
或者:
nohup bin/activemq start > /tmp/smlog 2>&1 &  
查看启动情况:
通过端口查询,activeMQ默认配置下启动会启动8161和61616两个端口,其中8161是mq自带的管理后台的端口,61616是mq服务默认端口:
netstat -ntlp|grep 8161  
netstat -an|grep 61616  
访问activeMQ管理界面,http://ip:8161/admin,如果是本机就是http://localhost:8161/admin
物理定义
##################################################

--查看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

--删除队列--
delete QL(Q_SVC2ADP_4_TELNET)

--查看监听器--
display listener (LSR_4_ECIS_QM)

--查看通道--
dis chs(*)

--查看通道--
display ql(*) [all]

--查看队列深度--
display ql(Q_SVC2ADP_4_HTTP) curdepth

--清除队列消息--
clear ql(Q_SVC2ADP_4_HTTP)

--查看CCSID--
display qmgr all

--修改CCSID--
ALTER QMGR [FORCE] CCSID(5488)

 

逻辑定义
##################################################
./JMSAdmin

DELETE QCF(T_ECIS_QCF)

DELETE Q(T_ECIS_Q_SVC2ADP_TELNET) 
DELETE Q(T_ECIS_Q_ADP2SVC_TELNET)
DELETE Q(T_ECIS_Q_SVC2ADP_JDBC)
DELETE Q(T_ECIS_Q_ADP2SVC_JDBC)

DELETE Q(T_ECIS_Q_SVC2ADP_HTTP)
DELETE Q(T_ECIS_Q_ADP2SVC_HTTP)
DELETE Q(T_ECIS_Q_SVC2ADP_SOCKET)
DELETE Q(T_ECIS_Q_ADP2SVC_SOCKET)

DEFINE QCF(T_ECIS_QCF) DESC() TRAN(CLIENT) HOST(10.151.128.13) QMGR(T_ECIS_QM) CHAN(T_ECIS.SVRCONN) PORT(2626) CCSID(5488)

DEFINE Q(T_ECIS_Q_SVC2ADP_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_TELNET) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_JDBC) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_JDBC) CCSID(5488)

DEFINE Q(T_ECIS_Q_SVC2ADP_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_HTTP) CCSID(5488)
DEFINE Q(T_ECIS_Q_SVC2ADP_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_SOCKET) CCSID(5488)
DEFINE Q(T_ECIS_Q_ADP2SVC_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_SOCKET) CCSID(5488)

 

 

 

 


WebSphere MQ常用命令及配置
################################################## 
//创建本地队列Q
DEFINE   QLOCAL (Q)
//将本地队列Q 的最大深度设置为5
ALTER QLOCAL (Q) MAXDEPTH(5)
//重新创建本地队列Q 如果Q已经存在,则将其全部属性重置为缺省属性
DEFINE QLOCAL (Q) REPLACE
//创建远程队列
DEFINE QREMOTE(QRNAME) RNAME(AAA) RQMNAME(QMGRNAME) XMITQ(QTNAME)
//创建传输队列
define qlocal(CLV_HQ_TRAN) usage(xmitq) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(REV_CLV) TRIGTYPE(EVERY) TRIGGER REPLACE
//创建接收端通道C
DEFINE CHANNEL(C) CHLTYPE(RCVR)
//创建发送方通道C ,连接对方的IP为10.10.10.10  端口为1414 通道连接的传输队列为XQ
DEFINE CHANNEL(C) CHLTYPE(SDR) CONNAME(’10.10.10.10 (1414)’) XMITQ(XQ)
//创建请求方通道
DEFINE CHANNEL(D) CHLTYPE(RQSTR) CONNAME(’10.10.10.10 (1414)’)
//创建服务器通道
DEFINE CHANNEL (D) CHLTYPE(SVR) xmitq (XQ1)
//创建服务器连接通道
DEFINE CHANNEL(E) CHLTYPE(SVRCONN)  REPLACE

//显示所有远程队列
display qremote (*)
//显示所有通道
Display channel (*)

//定义死信队列
DEFINE QLOCAL(QUEUE) DEFPSIST(YES) REPLACE

//设定队列管理器的死信队列
ALTER QMGR DEADQ(QUEUE)

设置MaxChannels和MaxActiveChannels属性(最大连接数)
##################################################
MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
在unix平台,修改qm.ini文件,添加如下所示(路径:/var/mqm/qmgrs/HQ_SVR): 
Channels:
MaxChannels = 3000   (最大通道数)
MaxActiveChannels = 3000   (最大活动通道数)
PipeLineLength=2
AdoptNewMCA=ALL
然后重启MQ

 

 

 

 


//定义持久性队列:
DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE

传输队列管理
##################################################
1:定义传输队列
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ)
注:
Q_TRANSFER:传输队列名

下面定义一个输入队列并带触发器
DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ) DEFPSIST(YES)  INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(DP_RCHANNEL) REPLACE
注:
参数1:传输队列名称(Q_TRANSFER)
参数5:触发器数据(DP_RCHANNEL),也就是触发后要启动的通道。

2:在传输入队列上定义触发器
DPCIS_Q_TRANSFER:传输队列
触发器数据:DP_RCHANNEL,即:发送通道,触发时启动该通道
alter qlocal(DPCIS_Q_TRANSFER) TRIGDATA('DP_RCHANNEL') TRIGTYPE(every) TRIGGER initq('SYSTEM.CHANNEL.INITQ')

远程队列管理
##################################################
通过输入以下命令来定义远程队列定义:
define qremote(Q1) rname(Q1) rqmname(QM_APPLE) xmitq(QM_APPLE)
注:
参数1:队列名称(发送方远程队列名)
参数2:远程队列(接收方的本地接收队列名)
参数3:远程队列管理器(接收方队列管理器名)
参数4:传输队列(发送方传输队列名)

通道管理
##################################################
1:创建接收方通道
DEFINE CHANNEL(SDR_ TEST)  CHLTYPE(RCVR)  REPLACE 
define channel(Q_R_CHANNEL2) chltype(RCVR) replace
注:
参数1:接收方通道名称
replace:表示有该通道了替换

2:创建发送方通道 
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(DP_RCHANNEL) chltype(SDR) conname('10.101.2.3 (1414)') xmitq(Q_TRANSFER) replace
注:
通道名称:DP_RCHANNEL (发送方通道的名称) 
传输队列:Q_TRANSFER  (发送方传输队列的名称)

3:启动通道
start channel(QM_ORANGE.QM_APPLE)

4:查看通道状态
dis chs(*)

侦听器管理
##################################################
1:定义侦听器
DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414)  REPLACE

2:启动侦听器
start listener(TCPLS1)
3:显示侦听器信息
display listener(tcpls1)

创建触发
##################################################
一般设置MQ触发器的目的有两种, 一是自动启动发送端通道, 二是监视队列消息, 一旦发现新的消息, 则利用触发器启动相应的处理进程
如果是利用触发器自动启动发送端通道, 使用方法1, 如果是利用触发器启动用户进程, 使用方法2

方法1
A 在传输通道上设置触发器, 打开触发器控制, 类型为"第一个"
B 初始队列为SYSTEM.CHANNEL.INITQ, 该队列为MQ专用的通道启动队列, 不需要手工启动其触发监视器
C 触发器数据为发送端通道名称, 例如 QAG.50
D 在发送端通道不活动的情况下, 在传输通道放入消息测试

方法2
A 创建一个触发启动队列, 其模板为SYSTEM.DEFAULT.INITIATION.QUEUE
runmqsc
define qlocal (MQ.TRIGER.INIQUEUE) like (SYSTEM.DEFAULT.INITIATION.QUEUE)
B 定义进程 所谓进程就是触发器要触发的程序本例中进程名称:TRIGER.PROGRAM 应用程序标识为:"Notepad.exe"
C 在队列上设置触发器, 一般为本地队列, 打开触发器控制, 类型根据自己的需要选择"第一个", "每个" 还是 "根据消息数量"
D 初始队列选择A中创建的触发启动队列, 例如MQ.TRIGER.INIQUEUE, 进程名称设置为B中定义的进程名称, 例如TRIGER.PROGRAM
E 启动触发监视器 runmqtrm -m QAGWY -q MQ.TRIGER.INIQUEUE
F 在本地队列放入消息进行测试

方法2也可以完成方法1的工作, 只需要将进程定义中的应用程序标识改为 runmqchl -m QAGWY -c QAG.50 就可以了, 但MQ中提供了专用的通道启动队列,
而该队列不需要手工启动触发监视器, 因此方法1比方法2的步骤要少, 配置也简单, 所以在利用触发器自动启动发送端通道的情况下, 还是方法1更好.


name是队列名称

Number Of Pending Messages  是队列中有多少个消息等待出队列

Number Of Consumers  是队列中有多少个消费者

Messages Enqueued  是队列共有多少个信息

Messages Dequeued  是队列中已经出列多少个消息

分享到:
评论

相关推荐

    MQ使用说明分享和心得

    【MQ使用说明分享】 在IT领域,消息队列(Message Queue,简称MQ)是一种重要的中间件,用于在分布式系统中实现可靠的数据交换。本文将基于Websphere MQ,分享一些关于MQ使用的要点和心得。 首先,理解MQ的核心...

    mq使用入门案例demo

    本案例"mq使用入门案例demo"旨在引导初学者了解并掌握如何在Java环境下使用MQ进行一对一队列和订阅者队列(一对多)的实践操作。 首先,我们需要理解MQ的基本概念。MQ作为一个中间件,允许应用程序之间通过发送和...

    简单的MQ使用实例,详细解释

    【标题】:“简单的MQ使用实例,详细解释” 在IT领域,消息队列(Message Queue,简称MQ)是一种常用于分布式系统中的中间件技术,它能够有效地处理应用程序之间的异步通信和数据交换。本实例主要围绕IBM的...

    IBM MQ使用指南

    ### IBM MQ 使用指南 IBM MQ 是一款非常成熟且广泛使用的消息中间件,它为企业级应用提供了可靠的、安全的信息传输机制。本文将详细介绍 IBM MQ 的基本概念、安装配置流程以及一些实用的操作命令,并通过示例代码...

    IBM+MQ使用方法整理打包

    本压缩包包含的"IBM MQ使用方法"资料,将帮助我们深入了解如何在不同平台上有效利用这一强大的工具。 IBM MQ的主要功能在于提供可靠的消息传递服务,它支持异构环境下的应用间通信,确保数据的高效、安全传输。MQ的...

    IBM_MQ_使用指南

    ### IBM MQ 使用指南详解 IBM MQ,原名为IBM MQ Series,是IBM公司开发的一款高性能、高可靠性的消息中间件,广泛应用于企业级分布式系统中,用于处理和管理应用程序之间的消息传递。随着计算机网络和分布式应用的...

    IBM MQ使用方法

    IBM MQ的使用方法涵盖多个方面,包括系统安装与配置、消息的发送与接收、API的使用以及通过Java和JMS进行开发等。以下是对这些知识点的详细解释: 1. **IBM MQ的安装与配置**:首先,你需要下载适合你的操作系统的...

    IBM-websphere-MQ使用说明.doc编程资料

    IBM-websphere-MQ使用说明.doc

    Rocket MQ 使用排查指南1

    【Rocket MQ 使用排查指南1】 Rocket MQ 是一款由阿里云基于 Apache RocketMQ 构建的分布式消息中间件,设计目标是实现低延迟、高并发、高可用和高可靠性。它适用于分布式应用系统的异步解耦和削峰填谷场景,支持...

    springboot+mybatis+redis+jpa+mq 使用demo

    在本项目中,"springboot+mybatis+redis+jpa+mq 使用demo"是一个整合了多种技术的实战示例,旨在展示如何在Spring Boot框架下有效地集成MyBatis、Redis、JPA(Java Persistence API)以及消息队列MQ。下面将详细解释...

    MQ使用文档

    ### MQ使用文档知识点详解 #### 一、MQSeries编程流模式概述 MQSeries(现在称为IBM MQ)是一款成熟的企业级消息传递系统,旨在为应用程序之间的通信提供可靠的基础。MQSeries支持多种编程流模式,每种模式都有其...

    IBM WebSphere MQ安装使用教程详细图解

    【IBM WebSphere MQ安装使用教程详细图解】 IBM WebSphere MQ,简称MQ,是一款由IBM提供的消息中间件,它允许应用程序之间可靠地交换信息,无论它们位于何处或使用何种操作系统。本教程旨在指导用户在Windows系统上...

    ibm mq jar下载

    在Java环境中,我们常常需要使用IBM MQ的Java API来与MQ服务器进行交互,这通常涉及到对特定JAR包的依赖。在本场景中,"ibm mq jar下载"指的是获取这些必要的库文件,以便在Java项目中整合IBM MQ的功能。 IBM MQ ...

    MQ使用指南

    【MQ使用指南】 IBM MQ(原名为MQSeries)是一种企业级的消息中间件,它提供了一种可靠、高效和安全的方式,使得分布在不同网络环境的应用之间能够进行数据交换。本指南将详细阐述IBM MQ的基本操作与配置,以帮助...

    mq.rar_MQ_ibm mq 实例代码_ibm mq 文件传输_ibm mqput怎么用_put

    另一个文件`www.pudn.com.txt`可能包含的是更详细的代码示例或者对IBM MQ使用的进一步说明。通常,这样的文本文件可能会提供额外的配置信息、环境变量设置或其他操作指南。 在实际应用中,IBM MQ文件传输是指通过...

    JMETER插件,进行IBM MQ测试

    本文将深入探讨如何使用JMeter插件进行IBM MQ(Message Queuing)的测试。 IBM MQ,原名WebSphere MQ,是IBM提供的一种消息中间件,它允许应用程序在不同的网络、操作系统和应用程序之间可靠地传输数据。通过IBM MQ...

    MQ集群实例及使用方法

    MQ群集的使用,描述MQ集群的使用方法,以及管理集群的方式

    Websphere MQ入门教程-使用IBM Websphere MQ

    【标题】:“Websphere MQ入门教程-使用IBM Websphere MQ” 【正文】: IBM WebSphere MQ(原名MQSeries)是IBM提供的一款企业级的消息中间件产品,它允许不同应用程序、系统和网络在不同时区和平台之间交换消息。...

Global site tag (gtag.js) - Google Analytics