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类似

最新文章

  1. DNS劫持解决方法
  2. CocoaPods安装使用及上传
  3. python实现软件的注册功能(机器码+注册码机制)
  4. HTTP报文详解
  5. hdu1181 变形课
  6. ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法
  7. redis info参数详解
  8. [Leetcode][JAVA] Triangled
  9. K2与OData和Swagger集成,从任何设备无需代码获取数据
  10. 使用PULL方式解析XML资源文件下面的xml文件
  11. java学习之动态代理模式
  12. 使用php创建WebSocket服务
  13. lua中的require机制
  14. QTimer在QThread环境中失效的问题
  15. jQuery -- 光阴似箭(一):初见 jQuery -- 基本用法,语法,选择器
  16. Ubuntu命令行快捷启动Matlab
  17. 论文笔记:Visual Semantic Navigation Using Scene Priors
  18. MySQL null与not null和null与空值''的区别
  19. 解析BroadcastReceiver之你需要了解的一些东东
  20. Java数组遍历输出

热门文章

  1. 对LCS算法及其变种的初步研究
  2. [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
  3. C++对象模型的那些事儿之六:成员函数调用方式
  4. PLSQL解析XML文件
  5. android开发要避免的那些坑
  6. 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)
  7. 多重DES
  8. 12、Libgdx的图像之全屏和垂直同步
  9. Demand Side Platform
  10. Linux IPC实践(3) --具名FIFO