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. Citrix 桌面虚拟化解决方案与VMware桌面虚拟化解决方案对比

    通过 XenDesktop 和 FlexCast为各种场景交付虚拟桌面 企业桌面面临的问题 为每个用户提供安全高效的桌面环境是几乎所有公司或组织的基本要求.如果用户无法使用他们的桌面或应用程序,公司就 ...

  2. Android的自动完成文本框-android学习之旅(二十六)

    AutoComplicatedTextView简介 AutoComplicatedTextView是从EditText派生出来的,可以使用EditText的所有的属性.当用户输入一定的内容后,会有提示 ...

  3. SDK目录结构

    android sdk里的各目录作用 AVD Manager.exe:虚拟机管理工具,用于建立和管理虚拟机. SDK Manager.exe:sdk管理工具,用于管理.下载sdk.sdk工具,能及扩展 ...

  4. J2EE Exception:WELD-001408 Unsatisfied dependencies for type [SelectModelFactory] with qualifiers [@

    Issue: When you inject some resources using @Inject, you may encounter following exception after app ...

  5. >/dev/null 2>&1

    >/dev/null 2>&1 大部分在 crontab 计划任务中都会年到未尾带 >/dev/null 2>&1,是什么意思呢? > 是重定向 /dev ...

  6. PHP与JavaScript在处理数组方面的不同之处

    数组在编程的时候是经常被使用到的一种数据结构,然而在不同的编程语言中是引用方法大同小异,下面来看一看数组元素在PHP与JavaScript中有什么不同吧. 以遍历数组元素为例: 1.在PHP中, // ...

  7. 使用CocoaPods创建Pod

    本来想给App评分,好的开源组件没有Swift版,如是自己写了个简易的.想着既然写了,就写完善点,提供给需要的人使用.这样SwiftyiRate诞生了. 下面主要说下创建pod的步骤: 一.创建git ...

  8. android官方技术文档翻译——工具属性

    本文译自androd官方技术文档<Tools Attributes>:http://tools.android.com/tech-docs/tools-attributes 本文地址:ht ...

  9. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  10. 手把手带你做一个超炫酷loading成功动画view Android自定义view

    写在前面: 本篇可能是手把手自定义view系列最后一篇了,实际上我也是一周前才开始真正接触自定义view,通过这一周的练习,基本上已经熟练自定义view,能够应对一般的view需要,那么就以本篇来结尾 ...