MQ集群及网关队列管理器的搭建

描述:
    如上图所示,为MQ的集群搭建部署图。CLUSTERA、CLUSTERB分别是两个集群,其中Qm1-Qm3、GateWayA为CLUSTERA集群中的队列管理器;Qm1-Qm3、GateWayB是CLUSTERB集群中的队列管理器。GateWayA与GateWayB负责网络路由和消息分发,使用集群的方式可以达到负载均衡的目的,除此之外还能提高MQ使用的稳定性。同一个集群中除网关队列管理器外的任意队列管理器因故关闭或停止工作后,其他的队列管理器可以接管它的工作从而保证业务应用的正常运行。
 
使用场景:
    为了提高分布式应用异步消息传输及处理的效率,从中间件的角度来优化,除此之外要保证消息传输过程的可靠性。Application1通过网关队列管理器A将消息发送到网关队列管理器GateWayB中,GateWayB收到消息后根据自身负载均衡算法将消息分发到不同的队列管理器对应的队列中,Application2使用监听的方式监听于Qm1-Qm3的队列上,一旦有消息被分发到各自的队列时,应用程序则会获取消息进行处理。
 
集群及网关队列管理器的搭建:(左边的未A机器、右边的为B机器)
Qm1、Qm2、Qm3、GateWayA、GateWayB为队列管理。
Queue为本地队列,分别在A中的Qm1、Qm2、Qm3和B中的Qm1、Qm2、Qm3创建。
TransQueue为传输队列,分别在GateWayA和GateWayB中创建。
CHAN_GATEWAYA_TO_GATEWAYB、CHAN_GATEWAYB_TO_GATEWAYA为发送、接收通道,在GateWayA中创建。
CHAN_GATEWAYB_TO_GATEWAYA、CHAN_GATEWAYA_TO_GATEWAYB为发送、接收通道,在GateWayB中创建。
ANY.TO.CLUSTERB为远程队列,在GateWayA中创建。
ANY.TO.CLUSTERA为远程队列,在GateWayB中创建。
RemoteQueue为远程队列,分别在GateWayA、GateWayB中创建。
CLUSTERA、CLUSTERB分别为A、B机器的MQ集群名称。
QEDAD分别在A、B机器的所有队列管理器中创建。
 
1.分别在A、B机器上创建队列管理器Qm1、Qm2、Qm3。
--参见《第三章 MQ队列管理器搭建之(二)》
 
 
2.创建网关队列管理器GateWayA、GateWayB。
--网关队列管理器的创建与Qm1-Qm3方式相同,不同的是网关队列管理器中需要创建一个特殊的远程队列,此外其他的远程队列指向的目标队列管理器名称为目标网关队列管理器中的远程队列名。
GateWayA中
--DEFINE QREMOTE('RemoteQueue') RNAME('Queue') RQMNAME('ANY.TO.CLUSTERB') XMITQ('TransQueue')
--DEFINE QREMOTE(ANY.TO.CLUSTERA) RNAME('') RQMNAME('')
GateWayB中
--DEFINE QREMOTE('RemoteQueue') RNAME('Queue') RQMNAME('ANY.TO.CLUSTERA') XMITQ('TransQueue')
--DEFINE QREMOTE(ANY.TO.CLUSTERB) RNAME('') RQMNAME('')
3创建Queue、RemoteQueueCHAN_GATEWAYA_TO_GATEWAYB、CHAN_GATEWAYB_TO_GATEWAYA及监听端口。
--参见《第三章 MQ队列管理器搭建之(二)》
4.创建本地队列Queue,创建中需要指定集群名称。
A机器的Qm1-Qm3
--DEFINE QLOCAL ('Queue')  CLUSTER(CLUSTERA)  DEFPSIST (YES) MAXDEPTH(100) REPLACE
B机器的Qm1-Qm3
--DEFINE QLOCAL ('Queue')  CLUSTER(CLUSTERB)  DEFPSIST (YES) MAXDEPTH(100) REPLACE
5.定义完全存储仓库(Qm1与Qm3为完全存储仓库、网关队列管理器和Qm2为部分存储仓库)
--runmqsc Qm1
--ALTER QMGR REPOS(CLUSTERA)
--runmqsc Qm3
--ALTER QMGR REPOS(CLUSTERA)
6.定义集群发送通道与集群接收通道
A:
GateWayA:
--DEFINE CHANNEL(TO.GateWayA) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('192.168.x.x(1414)') CLUSTER (CLUSTERA)
--DEFINE CHANNEL(TO.Qm1) CHLTYPE(CLUSSDR)  TRPTYPE(TCP) CONNAME('192.168.x.x(2414)') CLUSTER (CLUSTERA)
Qm1:
--DEFINE CHANNEL(TO.Qm1) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('192.168.x.x(2414)') CLUSTER (CLUSTERA)
--DEFINE CHANNEL(TO.Qm3) CHLTYPE(CLUSSDR)  TRPTYPE(TCP) CONNAME('192.168.x.x(4414)') CLUSTER (CLUSTERA)
Qm2:
--DEFINE CHANNEL(TO.Qm2) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('192.168.x.x(3414)') CLUSTER (CLUSTERA)
--DEFINE CHANNEL(TO.Qm1) CHLTYPE(CLUSSDR)  TRPTYPE(TCP) CONNAME('192.168.x.x(2414)') CLUSTER (CLUSTERA)
Qm3:
--DEFINE CHANNEL(TO.Qm3) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME('192.168.x.x(4414)') CLUSTER (CLUSTERA)
--DEFINE CHANNEL(TO.Qm1) CHLTYPE(CLUSSDR)  TRPTYPE(TCP) CONNAME('192.168.x.x(2414)') CLUSTER (CLUSTERA)

B:参见A类似

MQ队列管理器搭建(三)的更多相关文章

  1. MQ队列管理器搭建(二)

    MQ级联方式使用场景 使用场景:     如上图所示,Application1与Application2要进行通信或者消息互换,使用MQ中间件作为中介.上图中,Application1与Applica ...

  2. MQ队列管理器搭建(一)

    多应用单MQ使用场景 如上图所示,MQ独立安装,或者与其中一个应用同处一机.Application1与Application2要进行通信,但因为跨系统,所以引入中间件来实现需求.   Applicat ...

  3. mq队列管理器命令

    dspmq: 队列管理器显示 QMCIPSA-------队列管理器 runmqsc QMSAA  运行查找Q队列名 运行MQ命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名 ...

  4. com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器提供的安全性认证无效

    com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器“zm_queue_manager”提供的安全性认证无效, ...

  5. android中的常用布局管理器(三)

    接上篇博客 (5)TableLayout     表格布局管理器 在android中,线性布局和表格布局用的是最多的. 在很多的输出操作中,往往会使用表格的形式对显示的数据进行排版,tablelayo ...

  6. MQ队列管理

    分享一段代码,很实用. 下面这段java代码是我在国外一个论坛上发现的,源地址已经忘了.代码的作用是可以删除正在使用的mq的队列消息,管理mq的人一定知道它的美妙了吧,哈哈. 我拿来改了下,增加了2个 ...

  7. 用go-module作为包管理器搭建go的web服务器

    本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器.并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档. 源码在 ...

  8. Linux_CentOS-服务器搭建 <三> 补充

    今天 才发现,服务器上 JDK 都没有好好的安装下.在这里补充说下. 1.看看机子上JDK的安装了多少 $ rpm -qa |grep java 会出现类似: java-1.6.0-openjdk-1 ...

  9. MQ队列及常见操作

    一. 创建MQ队列管理器 1.1准备工作 到所安装websphere mq的机子上,进入/opt/mm/bin目录下,查询相关mq的情况,通过命令行./dspmq. 创建mq队列管理器的的时候要用mq ...

随机推荐

  1. antlr v4 使用指南连载2——准备环境

    antlr v4 开发环境         从上一篇文章的例子中可以知道,antlr有一套自己的语法来声明目标语言的语法,因此它本身就需要编译或者使用antlr提供的api来读取这些语法规则,并使之可 ...

  2. Cocos2Dv3.4在AppDelegate中不返回的情况及解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们通常想在app启动的早期做一些事情,可能放在AppDeleg ...

  3. Android Service详解

    service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务.例如,一个从service播放音乐的音乐播放器,应 ...

  4. 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置

              Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNETNetSarang Xshell 4 Build 0 ...

  5. 【一天一道LeetCode】#113. Path Sum II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  6. 尚学堂马士兵struts2 课堂笔记(三)

    19-20 简单数据验证 例如 前台jsp 及struts.xml <a href="user/user!add?name=a" >添加用户</a> < ...

  7. SpringMVC返回json是设置编辑等消息头,消息头信息介绍(respone.setHeader,这个从网上获取)

    1.  SpringMVC中设置消息头,例子如下: ? 因为上面的代码没有添加该文件的编码说明 , WEB应用程序在将jsp翻译成class文件时 , 把该字符串的内容按默认的保存方式指定的编码ASC ...

  8. (五十九)iOS网络基础之UIWebView简易浏览器实现

    [UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"h ...

  9. studio多渠道打包

    由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,这事就简单了. 友盟多渠道打包 废话 ...

  10. Java学习笔记(三)Java2D组件

    一  概述 Java2D的一切都基于java.awt包中的Graphics2D类,它是Graphics的子类. 为了绘制图形,需要使用面板作为画布,例如使用JPanel作为画布,面板有一个paintC ...