WebSphere MQ 入门指南
转自
WebSphere MQ 入门指南 - 大CC - 博客园
http://www.cnblogs.com/me115/p/3456407.html
这是一篇入门指南。我们从最基本的概念说起;
基础概念
对于MQ,我们需要知道4个名词:队列管理器、队列、消息、通道;对于编程设计人员,通常更关心消息和队列,对于维护管理人员,通常 会更关心队列管理器和通道。
如果我们把队列管理器比作是数据库,那么队列就是其中的一张表,消息就是表中的一条记录。
队列:我们可以简单地把队列看成一个容器,用于存放消息。
队列管理器:队列管理器构建了独立的 MQ 的运行环境,它是消息队列的管理者,用来维护和管理消息队列。
消息:MQ中的最小对象;默认情况下,消息缺省可以达到 4MB。消息可以分成持久消息和非持久消息。所谓“持久”的 意思,就是在MQ 队列管理器重启动后,消息是否仍然能保持。持久的消息写入或读出队列的同时会在 Log 中记录,所以性能上比非持久消息差不少。
通道:通道则是两个队列管理器之间的一种单向的点对点的通信连接, 消息在通道中只能单向流动。队列管理器之间的通信是通过配置通道来实现 的,通道两侧的队列管理器对这个通道的相关参数应该能对应起来。在通道上可以配置不同的通信协议,这样就使得编程接口与通信协议无关。通道两端的 配置必须匹配,且名字相同,否则无法连通。
RUNMQSC:命令行交互界面管理工具;作为维护人员的我们,与MQ打交道有两种方式,一种是通过MQ提供的二进制命令工具(在mq安装目录的bin目录下),另一种方式则是通过命令行交互管理工具;这二者在功能上有很多是重合的,但并非完全可替代;
RUNMQSC是一个通用的 MQ 对象管理工具,使用 MQSC命令集可以对 MQ 对象进行
全方位的管理,也是各种管理方式最直接、最全面的一种。
RUNMQSC 运行的命令集称为 MQSC (MQ Script Command)";在 RUNMQSC 中大小写无关,所有的命令会先转换成全大写再提交执行。所以如果要 表示大小相关的字串,比如对象名,则用引号将字串包住。
输入以下命令启动MQSC命令:runmqsc [queueManagerName]
ok,概念介绍完了,下面就是通过示例来学习如何使用他们;
首先,我们需要创建队列管理,用来存放队列。有了队列管理器后,就可以创建队列;队列创建了,就可以用来放入和取出消息;
创建队列管理器
eg:创建一个名为QM_MEMDB的队列管理器:
crtmqm -q QM_MEMDB
>Directory '/var/mqm/qmgrs/QM_MEMDB' created.
所有创建的队列管理器在/var/mqm/qmgrs目录下都会有对应文件名的子目录生成;
(至于为什么是/var/mqm,这个配置在安装目录下的mq配置文件中配置samp/mqs.ini)
从这里我们可以确定,队列管理器的创建是一个持久化的操作,当MQ服务器停止后再启动时,队列管理器都还是存在的;
启动队列管理器
启动名为QM_MMEDB的队列管理器:
/opt/mqm/bin$./strmqm QM_MEMDB
>WebSphere MQ queue manager 'QM_MEMDB' started using V7.5.0.0.
(停止mq队列管理器:endmqm)
创建队列
队列及消息属于MQ的对象,MQ的对象管理一般使用mqsc命令交互工具来管理;
对于创建队列的操作,最好先写好放在一个文件里,然后调用;
eg,我们在队列管理器QM_MEMDB中定义一个TEST1队列:
vi define_memdb.tst:
define qlocal (TEST1) DEFPSIST(YES) MAXDEPTH(150000)
然后调用mqsc来创建:
/var/mqm/sh$runmqsc QM_MEMDB < define_memdb.tst > out.txt
创建的结果信息输出到out.txt:
1 : define qlocal (TEST1) DEFPSIST(YES) MAXDEPTH(150000)
AMQ8006: WebSphere MQ queue created.
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
向队列中放入消息
基本队列操作命令分成两类, 一类在 MQ Server 端运行, 它们是 amqsput、 amqsget、
amqsbcg。另一类在 MQ Client 端运行,它们是 amqsputc、amqsgetc、amqsbcgc
从Server端将消息放入队列的命令格式:
amqsput amqsput QueueName [QueueManagerName]
amqsput和 amqsputc 可以将消息放入队列中, 程序把之后的每一行标准输入作为一条独立的消息,读到 EOF 或空行时退出。注意,UNIX 上的 EOF 为 Ctrl+D。可以将标准输入重定向到文件。队列中每放入一条消息,队列深度增加一。
eg:
/var/mqm/sh$amqsput TEST1 QM_MEMDB
查看队列中放入的消息
查看队列管理器QM_MEMDB中名为TEST1的队列:
/var/mqm/sh$amqsbcg TEST1 QM_MEMDB
从队列中取出消息
amqsget 和 amqsgetc 可以将消息从队列中全部读出并显示。读空后再等待 15 秒,在这段时间内如果有新的消息到达会一并读出。强行中断该程序用 Ctrl+C 。amqsget 和 amqsgetc 执行后队列应该为空,即队列深度为零。
以上是单个服务器的单个队列管理器中完成的操作,如果需要跨队列管理器或跨机通信,我们需要MQ命令服务器和MQ监听器,当然,少不了建立通道;
MQ命令服务器
WebSphere MQ 命令服务器是队列管理器的一个组件,用来对外来的命令消息进行解释和执行。在远程管理和编程管理的应用中,需要启动命令服务器。一个队列管理器最多只有一个命令服务器,缺省情况下在创建队列管理器时由系统一并创建。
启动与停止:
strmqcsv
endmqcsv
dspmqcsv
启动后执行下,观察状态,看到正在运行:
/opt/mqm/bin$dspmqcsv QM1
WebSphere MQ Command Server Status . . : Running
MQ 监听器
WebSphere MQ 中监听器也是队列管理器的一个组件,用来监听外来的连接请求并相应
地做出反应。监听器通常需要先配置,然后才能运行,配置参数与监听器选择的通信协议有关。当然,也可以在第一次启动监听器时将配置参数传入,隐式地进行配置。一个队列管理器可以有多个监听器,分别应用于不同的通信协议或同一协议的不同参数。比如 TCP/IP 的不同端口。
通道的配置和建立下面单独拿出来讲解;
over。
更多参考
《精通 WebSphere MQ》本书讲解的MQ版本为5.3,有些老,不过操作命令都没有变化;逻辑清晰,还不错;涉及到MQ的新特性,比如发布/订阅方面,就不用看这本书了,转到参考2:
《Application Programming Reference MQV7》
Posted by: 大CC | 03DEC,2013
WebSphere MQ 入门指南【转】的更多相关文章
-
WebSphere MQ 入门指南
WebSphere MQ 入门指南这是一篇入门指南.我们从最基本的概念说起: 基础概念 对于MQ,我们需要知道4个名词:队列管理器.队列.消息.通道:对于编程设计人员,通常更关心消息和队列,对于维护管 ...
-
IBM WebSphere ESB入门指南
[TOC] 第一章 ESB介绍 本博客介绍一款ESB产品,IBM WebSphere ESB.ESB(Enterprise Service Bus)也即企业服务总线.ESB有很多产品,IBM的IBM ...
-
消息中间件及WebSphere MQ入门(转载)
消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待 ...
-
Rabbit MQ 入门指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
-
IBM WebSphere MQ 7.5基本用法
一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...
-
深入浅出 JMS(二) - ActiveMQ 入门指南
深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...
-
【译】JWT(JSON Web Token) 入门指南
JWT 入门指南 原文地址:https://blog.angular-university.io/angular-jwt/ 这篇文章是两篇手把手教你如何在Angular应用(也适用于企业级应用)中实现 ...
-
Web API 入门指南 - 闲话安全
Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...
-
Vue.js 入门指南之“前传”(含sublime text 3 配置)
题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...
随机推荐
-
C语言实现GPT头和分区表的读取(gcc)
#include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <string.h&g ...
-
codeforces A. Puzzles 解题报告
题目链接:http://codeforces.com/problemset/problem/337/A 题意:有n个学生,m块puzzles,选出n块puzzles,但是需要满足这n块puzzles里 ...
-
Android01--开发环境搭建
1 -- 下载所需软件 Android SDK下载地址:http://developer.android.com/sdk/index.html Eclipse下载地址:http://www.eclip ...
-
KMP的模版实现(以hdu1711为例)
贴代码,觉得带template的有一些大材小用……不过还是按自己风格写吧! /************************************************************* ...
-
SRM 441(1-250pt, 1-500pt)
DIV1 250pt 题意:用数组A表示置换,由该置换得到数组B(B[0] = 0, B[i] = A[B[i-1]]).给定A,求一个A',使得由A'得到的B为单循环置换且A'与A的差距最小.定义A ...
-
HTTP的报文格式解析
一.概述 http报文是面向文本的,报文中每一个字段都是一些ASCII码串,各个字段的长度是不确定的.http有两类报文:请求报文 响应报文 二.请求报文 一个http请求报文由 请求行(reque ...
-
tomcat的集群配置
配置环境需要:1.Apache服务器,下载地址:http://httpd.apache.org/download.cgi#apache22 2.tomcat6.0或者tomcat7.0,(集群中tom ...
-
android中跨线程向控件传值的问题
activity.oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的handlemessage回调函数中调用更新界面显 ...
-
中间件方法必须返回Response对象实例(tp5.1+小程序结合时候出的问题)
前言:在最近开发小程序通过中间件检查是否携带token时候报的一个错误 解决方法: 根据手册中需要return出去才可以不报错
-
linux 命令之netstat
转自:http://www.maomao365.com/?p=699 linux 命令之netstat 在linux中netstat命令的作用是查看TCP/IP网络当前所开放端口,所对应的本地和外地端 ...