MQ服务器端和客户端通信浅谈

1. WebSphere MQ的服务端的安装和配置

(1)创建名为venus.queue.manager的默认队列管理器。

在DOS窗口命令提示符下,输入以下命令:

crtmqm -q venus.queue.manager

(2)启动刚才创建的队列管理器。

在DOS窗口命令提示符下,输入以下命令:

strmqm venus.queue.manager

(3)启动MQSC命令。

在DOS窗口命令提示符下,输入以下命令:

runmqsc venus.queue.manager

(4)新建名为orange.queue的本地队列。

输入以下命令:

define qlocal (orange.queue)

注意:MQSC中任何小写字母将自动转换成大写,除非用单引号将它们括起来。这意味着如果使用名称Orange.Queue创建了队列,则记住在MQSC以外其他命令中都必须使用Orange.Queue。

(5)停止MQSC。

输入以下命令:

end

现在,我们已经定义了以下对象:

(1)名为venus.queue.manager的默认队列管理器。

(2)名为ORANGE.QUEUE的队列。

测试对象:要测试队列管理器和队列,请使用样本程序amqsput(将消息放入队列)和amqsget(从队列获取消息),步骤如下:

(1)启动DOS窗口,进入到C:\Program Files\IBM\WebSphere MQ\bin目录下。

(2)将消息放入队列。

输入以下命令:

amqsput ORANGE.QUEUE

显示以下消息:

Sample amqsput0 start

Target queue is ORANGE.QUEUE

(3)输入一些字符数据,然后双击"Enter"键,则显示以下消息:

Sample amqsput0 end

现在消息已经被放在队列中了。

(4)要从队列中获取消息,输入以下命令:

amqsget ORANGE.QUEUE

在屏幕上将显示您刚才输入的字符数据消息。暂停后,例子程序结束。

如果以上步骤都能完成,则完成了本地安装的验证。

注意:如果在任何阶段中断整个安装过程,则应该从头开始重新运行安装。

2. WebSphere MQ客户端的安装和配置

如果我们开发的基于MQ的应用与MQ服务器不在同一台机器上,那么就必须在MQ应用端安装MQ客户端。下面我们以在Suse Linux 10下安装WebSphere MQ v6.0 Client为例介绍MQ客户端在Linux下的安装和配置步骤。

(1)解压缩MQ客户端安装包:C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz,命令如下:

tar -xvfz C84CJML.WebSphere MQ V6.0 Linux x86 Client.tar.gz

(2)创建WebSphere MQ 必需的文件系统,命令如下:

mkdir /opt/mqm # for product code

mkdir /var/mqm # for working data

(3)创造MQ用户和用户组,命令如下:

groupadd mqm

useradd -d /var/mqm -g mqm -G mqm mqm

passwd mqm # change password to "password"

(4)为mqm用户组添加root组

cd /etc

vi group

修改 mqm:!:1000:mqm ? mqm:!:1000:mqm,root

(5)调整系统参数(视需要而定)

修改最大共享内存,命令如下:

cat /proc/sys/kernel/shmmax

echo 268435456 >/proc/sys/kernel/shmmax

修改最大文件句柄,命令如下:

cat /proc/sys/fs/file-max

echo 32768 >/proc/sys/fs/file-max

(6)转到WebSphere MQ解压后的目录中,获得WebSphere MQ授权,命令如下:

./mqlicense.sh -text_only

阅读全文后,选择1接受授权。

(7)安装WebSphere MQ客户端,命令如下:

rpm -ivh MQSeriesRuntime-6.0.0-0.i386.rpm

rpm -ivh MQSeriesSDK-6.0.0-0.i386.rpm

rpm -ivh MQSeriesJava-6.0.0-0.i386.rpm

rpm -ivh MQSeriesClient-6.0.0-0.i386.rpm

rpm -ivh MQSeriesSamples-6.0.0-0.i386.rpm

(8)安装校验

rpm -qa | grep MQSeries

结果如下则表明MQ 客户端的安装已成功。

MQSeriesRuntime-6.0.0-0

MQSeriesSDK-6.0.0-0

MQSeriesJava-6.0.0-0

MQSeriesClient-6.0.0-0

MQSeriesSamples-6.0.0-0

3. WebSphere MQ的服务端和客户端的互联

本节的WebSphere MQ的服务端和客户端不在同一台机器上。

本节以上述1,2两个步骤安装好的MQ服务端和MQ客户端为例,介绍如何配置MQ的服务端和客户端使两者能够互联。

(1)服务端配置

1)点"开始"->"所有程序"->"IBM WebSphere MQ"->"WebSphere MQ 资源管理器",进入WebSphere MQ 资源管理器界面。如下图所示:

2)创建名为"QM_JACK"的队列管理器

<1>选中"队列管理器"->"新建"->"队列管理器",如下图所示:

<2>在队列管理中输入"QM_JACK",其他选项默认不变,点"下一步":

<3>设置队列日志(本步骤采用系统默认设置),点"下一步":

<4>启动队列管理器,创建服务器连接通道,允许在TCP/IP上进行队列管理器的远程管理,点击"下一步":

<5>设置队列管理器QM_JACK的侦听端口:8927(用户可以根据需要自行更改端口号),点击"完成"。

<6>系统进入等待界面:

<7>队列管理器QM_JACK创建成功

3)在QM_JACK下创建名为"QUEUE_RECV"和"QUEUE_REPLY"的本地队列(客户可以根据自己的需求随意更改本地队列的名字和数量,这里创建这两个本地队列只是为之后的MQ_Tuxedo项目作准备):

设置队列名后其他属性全为系统默认值,点击"确定"。

4)在QM_JACK下创建名为"CNN_JACK"的服务器通道。

通道名称设为CNN_JACK,其他选项保留为系统默认设置,点击"确定"。

5)在MQ服务器端的计算机用户中添加MQ客户端所在计算机的系统用户。比如我的MQ客户端被Suse Linux下的root用户使用,那么,我们就需要在MQ的服务端(也就是Windows xp系统中添加名为"root"的用户)所在的计算机系统中添加名为"root"的用户。具体步骤如下:

<1>点击"开始"->"控制面板"->"计算机管理"->"系统工具"->"本地用户和组"->"用户",点右键,选"新用户",如下图所示:

<2>创建新用户:root(注意:这里的用户名"root"是MQ客户端所在系统的用户名,用户要根据具体情况进行修改)

随意设置一个有效密码,选中密码永不过期,点击"创建"。

<3>将新用户加入mqm组(注意:这里的mqm组是我们安装完MQ Server后系统自动创建的)

启动监听器

Runmqlsr –m QM_JACK"

设置

export MQCHLTAB= /PTAH/AMQCLCHL.TAB

重启机器。至此,MQ服务端的配置完成。

(2)客户端配置

按照我们前面的步骤,MQ客户端是安装在Suse Linux 10 上,所以本节以Suse Linux 10下的MQ Client v6为例说明如何配置MQ客户端才能连上MQ服务器。

1)设置MQSERVER环境变量,命令如下:

export MQSERVER='CNN_JACK/tcp/9.186.110.133(8927)'

参数说明:

服务器连接通道名称:CNN_JACK

服务器连接通道协议类型:tcp

服务器IP地址:9.186.110.133

服务器连接通道所在的队列管理器QM_JACK的侦听端口:8927

2)测试客户端与服务端的网络连接

在客户端使用ping命令检查客户端是否能连上服务端机器。

同样,在服务端使用ping命令检查服务端是否能连上客户端机器。

测试完成后,进入下一步。

3)进入/opt/mqm/samp/bin,使用样本程序amqsputc(用来将消息发送到服务端队列)和amqsgetc(用来从服务端队列中读取消息)来测试客户端与服务端的MQ连接是否畅通,具体步骤如下:

<1>输入命令:

./amqsputc QUEUE_RECV QM_JACK

则会显示以下消息:

Sample AMQSPUT0 start

target queue is QUEUE_RECV

<2>输入一些字符,然后双击"Enter"键,则显示如下信息:

Sample AMQSPUT0 end

<3>要从队列获取消息,则输入如下命令:

./amqsgetc QUEUE_RECV QM_JACK

则会在屏幕上打印出刚才输入的字符数据消息。暂停后,;例子程序结束。

如果以上步骤都能够完成,则完成了MQ服务端和客户端的互联配置。

注意:有时候,MQ客户端联服务端时会因为两端字符集编码CCSID不一样造成连接的失败,典型错误是:MQCONN ended with reason code 2059。在队列管理器的错误日志(位于/var/mqm/errors/AMQERROR**.log)中有如下信息:

-------------------------------------------------------------------------------

08/23/2002 11:51:48

AMQ9541: CCSID supplied for data conversion not supported.

EXPLANATION:

The program ended because,

either the source CCSID '437' or the target CCSID '1381' is not valid,

or is not currently supported.

ACTION:

Correct the CCSID that is not valid, or ensure that the requested CCSID can be supported.

解决方法如下:在服务端用runmqsc qmname命令,输入dis qmgr查看CCSID属性值nnnn,在客户端上配置环境变量: Windows 下:set MQCCSID=nnnn(在服务端看到的CCSID), Linux下:export MQCCSID=nnnn(在服务端看到的CCSID),重新启动MQ 客户端机器即可。

MQ服务器端和客户端通信浅谈的更多相关文章

  1. 计算机网络:套接字(Socket)| Python socket实现服务器端与客户端通信,使用TCP socket阿里云ECS服务器与本机通信

    所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制.从所处的地位来讲,套接字上联应 ...

  2. Kubernetes容器之间的通信浅谈

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 作者: Matt Zand 和 Jim Sullivan 译者: 穿过生命散发芬芳F Kubernetes是一个容器化的解决 ...

  3. java socket编程 初级 服务器端和客户端 通信

    package server; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerS ...

  4. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  5. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  6. QT实现TCP通信服务器端和客户端(支持多个客户端)精简版

    上星期接了个私活,工期两星期,报酬3000,写一个小软件,采集定向网络上的数据,并进行双向通信,捣鼓了两天,终于把QT中tcp通信这块调通了,找过N多例子,绝大部分都是基本的一个服务端一个客户端通信的 ...

  7. Android安全开发之浅谈密钥硬编码

    Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...

  8. 浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  9. [转]浅谈https\ssl\数字证书

    浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...

随机推荐

  1. ubuntu18.04上搭建KVM虚拟机环境超完整过程

    看标题这是篇纯运维的文章.在中小型企业中,一般很少配置专业的运维人员,都是由开发人员兼着.同时,对有志于技术管理的开发人员来说,多了解一些运维及整个软件生命周期的知识,是很有帮助的,因为带团队不仅仅是 ...

  2. WINDOWS 安装ZeroMQ

    zmq看起来很好用,但是安装起来不是一般麻烦.原来以为java绑定会提供jar包直接可使用,但是官网没有提供已经编译好的库文件和jar.多么的不方便啊!最终还是要自己动手编译! 安装java版本的zm ...

  3. java unicode补充字符带来的码点和代码单元问题

    码点与代码单元 java string有两种判定字符的方式,一种是以码点,一种以代码单元,简单讲,码点就是真正的字符,代码单元是按大小即char型长度2个字节划分字符串. 所以length和chara ...

  4. windows中实现python,redis服务自动重启(任务计划程序+bat脚本)

    需求:银行电脑无法自动开机,只能 通过 应用相关服务每天自动重启的方式实现 服务更新并且防止服务假死,内存过大 等情况 相关工具:win10系统中,使用windows自带的任务计划程序 和 bat脚本 ...

  5. [记录]python异步编程async/await实现

    from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE import socket from types import corou ...

  6. Excel催化剂开源第43波-Excel选择对象Selection在.Net开发中的使用

    Excel的二次开发有一极大的优势所在,可以结合用户的交互进行程序的运行,大量用户的交互,都是从选择对象开始,用户选择了单元格区域.图形.图表等对象,之后再进行程序代码的加工处理,生成用户所需的最终结 ...

  7. HHyperledger Fabric 之 TLS (fabric-java-sdk)使用grpcs方式访问fabric

    我在很多fabric的技术群中,很多使用javasdk连接fabric的同友,初始的时候很多都没有成功的使用TLS进行区块链交易: 是sdk不支持,还是我们没有找到解决方案? 其实不然,我这里使用的是 ...

  8. win10 安装mysql(图文详情)避免卡在最后一步

    win10 安装mysql 本人安装mysql一般都是在镜像文件夹中下载(http://mirrors.sohu.com/),最近系统重做了之后安装mysql5.5.msi,可以安装成功.但是在最后的 ...

  9. javaee+tomcat新特性,乱码问题

    Tomcat版本问题,servlet乱码问题 我在学习的时候,老师用的是Tomcat1.7版本,在jsp发送get请求的时候,Servlet中还要对get请求传递过来的参数进行解码编码,因为tomca ...

  10. mysql协议分析1---报文的格式和基本类型

    navicat 和 mysql 是一对好基友,每天都有非常频繁的交流,主人在navicat上写下每条sql语句,轻轻的点了下执行按钮,navicat就飞快的把主人的指令传送到mysql那里,mysql ...