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. 【问题汇总】ScrollView嵌套GridView的问题

    在开发中遇到了ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当它们碰到一起的时候便会出问题,即GridView会显示不全. 解决办法,自定义一个GridView控件. [ ...

  2. Android存储之SharedPreferences

    Android数据存储之SharedPreferences SharedPreferences对象初始化 SharedPreferences mSharedPreferences = getShare ...

  3. 百度地图隐藏缩放控件比例尺Logo

    对于百度地图最新版V3.7.3,以前的隐藏控件方法失效,可用以下方法隐藏: 1.隐藏缩放控件: mMapView.showZoomControls(false); 2.隐藏比例尺: mMapView. ...

  4. ASP.net 路径问题 详解

    各位有没有碰到在日常工作中经常在路径设置的时候把 "~/ ../ .../ . / .http://www.cnblogs.com/"这些符号搞混搞乱了?偶尔还会因路径的问题郁闷了 ...

  5. Ubuntu 15.10下的WebStorm-11.0.3完美破解

    由于最新的JetBrains 发布了最新版本的IntelliJ IDEA的各个版本,而且更换了注册机的使用方式,这就导致了之前对WebStorm的破解方法不能在使用了.所以我们就必须另寻他法咯.如题, ...

  6. React Native项目组织结构介绍

    代码组织: 目录结构: . ├── components //组成应用的各个组件 │   ├── Routers.android.js //每个组件若实现不一样,分为android的实现和ios的实现 ...

  7. 纯CSS箭头,气泡

    原文地址: CSS Triangles 演示地址:CSS Triangles Demo 原文日期: 2013年8月5日 翻译日期: 2013年8月9日 本文两种实现方式: 使用或不使用 before ...

  8. Spark MLlib数据类型

        MLlib支持几种数据类型:本地向量(local vectors),和存储在一个简单机器中的矩阵(matrices),以及由一个或多个RDDs组成的分布式矩阵. 1,本地向量(Local Ve ...

  9. 使用DBMS_LOCK控制程序并发

    在调用并发的程序时,假设两个人同时提交了某一个并发请求,并且传入了同样的参数,假设在程序中使用了对状态的控制,例如在刚进入main函数的时候马上就将状态update了,那么其中某一个人就会查不到该条数 ...

  10. 文件I/O实践(2) --文件stat

    功能:获取文件元数据 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int st ...