WebSphere MQ7 实现多点广播

JMS调用IBM MQ监听模式 NULL 博文链接:https://qiaokeli.iteye.com/blog/1782656 立即下载

原文翻译自:http://blog.youkuaiyun.com/yaominhua/article/details/8612569

加上了一些自己的理解和注释。去掉了一些不必要的步骤。


最近由于工作需要,需要用到MQ服务器,这边用的是IBM MQ服务器。IBM除了卖软件还主要卖服务,什么是服务?就是所谓的技术支持。软件、数据库、服务器卖给你了,你还必须要请IBM的专家来搞,不然你自己搞不明白。所以说,IBM的东西公开的资料非常少,没有前人指路,只能自己摸索。

P话少说了,这次想实现的功能是程序发送数据到MQ服务器点A上(至于我为什么说点A,而不是队列A、主题A,后后面会讲),然后另外一个程序去监听队列A1,A2,A3等等。。可以看出来我需要实现数据分发的功能。有两个思路实现这个功能。

1.使用程序来实现数据分发。程序推送数据到队列A上(这时候上文提到的点A就是一个队列啦),然后启动一个监听器监听队列A,监听到数据后再推送到队列A1,A2。。然后另外两个监听器去监听队列A1,A2。

能够满足功能需求!并且简单易懂,容易操作。对于上面这个思路,有人可能质疑这样是否给自己找麻烦,因为我把数据推到队列A,然后监听,再推到队列A1,A2中。为什么不直接推送到队列A1,A2上面去呢?这里其实涉及到抽象、涉及模式的问题。我们将推送到队列A1,A2这个操作抽出来,提供给调用者的只是推送到一个队列的操作。减少耦合。。不多说。。


    2.使用MQ的发布订阅模式实现功能。简单来说程序推数据到主题(topic)A上(这时候,上文说的点A就是一个主题),然后利用MQ的订阅功能,让队列A1,A2订阅主题A。程序再去监听A1,A2两个队列。思路都懂,就是怎么配置MQ服务器,让队列A1,A2订阅主题A。这个是本文的重点,下面是具体的操作:


①准备工作(一)

IBMMQ服务器版本:MQ7.0.1.5

  操作系统:Windows 7 Enterprise

程序语言:java

jdk版本:  jdk1.7

整个多点广播的概要图如下图所示:

  

大概意思就是:Subscriber1,Subscriber2,Subscriber3订阅了主题“topic”,Subscriber1,Subscriber2,Subscriber3分别指向队列管理器QM1中的三个远程队列remote_queue1,remote_queue2,remote_queue3,这三个远程队列是通过传播队列TransmitQueue与队列管理器QM2中的LocalQueue1,LocalQueue2,LocalQueue3一一对应。你可能注意到QM2中还有三个所谓的别名队列AliasQueue1,AliasQueue2,AliasQueue3,翻译的原文中用到了这三个别名队列,但我觉得没有意义,并且没有他们也能测试通顺。因此下面的配置步骤中也没有别名队列的身影。怎么才能使得QM1中的远程队列发送消息到QM2中的本地队列呢?当然是通过发送通道和接收通道啦。因此我们需要在QM1中配置发送通道,在QM2中配置接收通道。

       原文中的这个图有问题,我做了一点更改,谢谢英子帮我P的图。O(∩_∩)O~


②准备工作(二)

IBMMQ在启动或者程序连接的时候会有各种莫名其妙的问题。主要是连接问题,安全验证问题。连接被拒绝的情况,请检查ip、端口是否配置OK。

安全验证的问题,可以将IBMMQ服务器管理员设置为系统管理员,如下所示,



还有就是参照http://blog.youkuaiyun.com/xtj332/article/details/14162555这篇文章。



③创建队列管理器QM1,端口1415

右键点击队列管理器菜单,选择新建队列管理器,输入队列管理器名字QM1,下一步-》定义tcp/ip的端口是1415。


④创建队列管理器QM2,端口1416

方法同上。


⑤在QM1中创建传播队列。

在QM1中-》队列,右键点击队列,选择新建本地队列(local queue),需要选择“传播“,和“支持队列分发”


⑥创建发送、接受通道。

在QM2中创建接收通道,QM2->右键点击通道-》新建接收通道-》完成。通道的名字随便起。

在QM1中创建发送通道,QM1-》右键点击通道-》新建发送通道-》通道的名字需要和QM2中的接收通道名字一样(如果不一样会有什么后果,本人没有测试),点击下一步,设置ConnectionName,就是接收方的信息,格式是ip(port),比如我自己在本机测试,因为输入的是 127.0.0.1(1416)。


⑦在QM2中创建三个本地队列A,B,C


⑧在QM1中创建三个远程队列A1,B1,C1,分别指向队列管理器QM2中的队列A,B,C。并且需要选择传播队列,即在第五步中创建的队列。


⑨在QM1中创建主题topic。名字随便起。我们这里假定是test_topic.


⑩在QM1中创建三个Subscrpitions,都订阅test_topic,分别指定对应QM1中的三个远程队列。


至此,完成所有的配置。你可以右击主题,测试发送一个消息,看能否在QM2中的三个队列中看到你发送的东西。


也可以使用java程序来测试。由于需要用程序向MQ服务器发送消息,因此我们需要在队列管理器QM1中创建一个服务器通道,名字是“server_channel”。

测试代码如下:


  try {
            MQTopicConnectionFactory tcf = new MQTopicConnectionFactory();
            tcf.setHostName("127.0.0.1");
            tcf.setTransportType(1);
            tcf.setPort(1415);
            tcf.setChannel("server_channel");
            tcf.setQueueManager("QM1");
            tcf.setBrokerQueueManager("QM1");
            tcf.setCCSID(1381);// 这个是字符集。
            TopicConnection tConn = tcf.createTopicConnection();
            tConn.start();
            TopicSession tSession = tConn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
            Topic topic = tSession.createTopic("test_topic");
            javax.jms.TopicPublisher tPub = tSession.createPublisher(topic);
            Message msg = tSession.createTextMessage("hello, LLY");
            tPub.publish(msg);
            tSession.close();
            tConn.close();
            tPub.close();
        } catch (Throwable e) {
            e.printStackTrace();
        } finally {
        }




/**********************************************************************************************************************************

******************************************************************************************************************************************

我这边遇到的一个问题是:发送消息到主题了,但是QM2中的本地队列没有东西。而在QM1中的传输队列中有消息。原因可能是你的发送方通道或者接收方通道没有打开。如下所示:



解决办法:手动启动通道。



IBM MQ 7.0安装配置文档 IBM MQ 7.0安装配置文档,内容详细,可以当做技术参考文档。 立即下载

相关推荐

IBM MQ 7.5.0 windows版本-全部

IBM MQ 7.5.0 windows版本全部仅需要一次下载即可使用

springboot 整合 ribbitmq

springboot 整合 ribbitmq ribbitmq常用工作模式介绍 1、Work queues 工作队列 生产者先发送消息给队列,队列将消息发送给绑定了队列的消费者,消费者之间为竞争关系,默认为轮询 应用场景,对任务较多的情况下使用工作队列可以提高响应速度 2、Publish/subscribe 广播模式 生产者将消息先发送给交换机,交换机将消息发送给绑定的队列,队列在将消息发送给消费者 2.1工作队列与广播模式的区别 不

weixin_45811530的博客 334

IBM MQ 7.0.3.rar

IBM MQ 7.0.3.rar

IBM MQ7.5 在Windows下的安装部署及使用

1.首先,先来了解下什么是MQ吧,IBM MQ原理和使用场景 2.下载MQ,官网下载地址,我这里使用的是7.5版本。 3.安装详细步骤参考:https://blog.youkuaiyun.com/chqlee1990/article/details/27526859 以下的代码环境就是参考了上面这个链接的教程,初次配置MQ队列最好完全和教程一致吧。 值得注意的是,新建服务器连接通道而不是服务器...

BAStriver的博客 1万+

Ubuntu操作系统等保测评指南

Ubuntu操作系统等保测评指南

qq_40181198的博客 7025

Android以太网开关流程分析

Android以太网开关流程分析 一、引言   在Android 以太网服务启动流程中我们启动了EthernetService(ES),NetworkManagementService(NMS)等服务,其中ES作为Binder的服务端,向客户端EthernetManger提供了调用接口的引用。因此,应用可以通过EthernetManger来访问以太网的相关接口。本篇文章将从APP调用以太网的使能和关闭的接口流程作为切入点来分析,以太网框架中,上层app是如何将指令传递到底层。图1-1所示为以太网使能和关闭

franc521的博客 6112

IBMMQ 7.5安装

IBMMQ 7.5(windows)安装配置教程一、资源准备二、安装三、MQ配置四、常用命令ibmmq7.5版本windows安装包-下载点击windowsServer2008R2安装向导,网络域选否完成,打开MQ资源管理器下一步勾选创建服务器连接通道端口默认1414完成 创建完成会自动启动,如果没有自动启动可以手动右键启动,启动后新建本地队列 右键新建=》本地队列下一步完成输入名称:下一步完成确定例如:我的MQ客户端所在的计算机用户名为Administrator,则在服务器端系统中添加名为"Admini

fenghuashao的博客 6247

从Simulink仿真到DSP28335真机部署:PID闭环控制快速移植指南

本文详细介绍了如何将Simulink中的PID闭环控制算法快速移植到DSP28335嵌入式平台。通过模型与代码映射、浮点与定点数选择、定时器中断配置、物理输出实现以及调试技巧五个关键步骤,帮助工程师高效完成从仿真到真机部署的全过程,特别适合需要实现精确控制的嵌入式开发者。

weixin_42521843的博客 363

linux 安装ibm mq7,Linux IBM MQ 7.1安装

1.建立mq用户及目录。[root@GCP2-APP38-VM]#mkdir /var/mqm ###业务数据存放目录[root@GCP2-APP38-VM]#mkdir /opt/mqm ###软件安装目录[root@GCP2-APP38-VM]#groupadd mqm[root@GCP2-APP38-VM]# useradd-g mqm -d /var/mqm mqm删除用户userde...

weixin_30345873的博客 802

Android11,无障碍服务模拟多手势使用dispatchGesture时总是onCancelled

AccessibilityService的dispatchGesture去模拟多手势,总是onCancelled的一种解决办法

m0_49953943的博客 2102

机器学习 线性回归 头歌实训

第1关:简单线性回归与多元线性回归 第2关:线性回归的正规方程解 第3关:衡量线性回归的性能指标 第4关:scikit-learn线性回归实践 - 波斯顿房价预测

weixin_57270536的博客 1万+

MQ原理、使用场景、IBM WebSphere MQ介绍及spring集成配置

一、MQ简介及特点         MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和

格色情调的博客 2万+

数据科学助力大数据领域的航空安全分析

随着航空业的快速发展,航班数量不断增加,航空安全问题日益受到关注。大数据时代的到来,使得航空领域积累了大量的数据,包括飞行数据、维护数据、气象数据等。本文章的目的在于探讨如何运用数据科学的方法和技术,对这些大数据进行分析,以提高航空安全水平。范围涵盖了从数据收集、预处理到数据分析、模型构建和应用的整个流程。本文将按照以下结构进行组织:首先介绍数据科学和航空安全分析的核心概念以及它们之间的联系;接着阐述核心算法原理和具体操作步骤,并使用Python源代码进行详细说明;

软件工程实践的博客 1292

消息中间件IBM WebSphere MQ入门说明

<br />源自<br />http://www.pcpop.com/doc/0/417/417623_all.shtml#p1<br /> <br />消息中间件概述 <br />    一、消息中间件概述<br />    消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存 或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。<br />    在分布式计算环境中,为了集成分布式应用,

wdwbw的专栏 1400

uniapp(全端兼容) - 最新详细实现双色球开奖走势图功能组件,uni-app红球走势图/蓝球走势图,解决双色球 “蓝球连线“ 问题,双色球效果及用线连接每个号码详细教程(同样适用于彩票开奖走势图

uni-app,双色球,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,红球走势,蓝球走势,连线,uniapp(vue):js实现双色球开奖走势图带连线,vue2,vue3,uniApp双色球组件插件,uniapp如何实现双色球走势图和连线,彩票走势图,前端 Vue实现彩票走势图,详细示例,走势图,彩票项目,绘制股票走势图,前端 JS实现彩票开奖走势图 连线,Uniapp有没有双色球的页面代码,红球蓝球的走势图如何做,双色球红球和值尾走势图,

✅ 精选推荐文章 3344

1、工作流介绍

工作流起源于办公自动化,是对软件中业务流程的抽象。通过工作流将各个任务有序组织起来形成一个完整的业务闭环。比如:请假审批流程,网上购物流程,银行贷款流程;!

leyoliu的博客 5108

常用MQ原理、使用场景和IBM WebSphere MQ介绍

一、MQ简介及特点 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收

Brave Soul Blog 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WebSphere MQ 性能调优浅谈

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/loulijun/MQperformance.html   2003 年 5 月 01 日 目前随着我们在中国的WebSphere MQ(MQSeries)用户数量越来越多,越来越多的用户开始对MQ使用时的性能优化问题提出要求,希望能够更好地使用我们的产品,并尽可...

benben 168

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

消息中间件及WebSphere MQ入门

消息 消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 1459

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

消息中间件IBM WebSphere MQ入门说明(下)

 MQ的通讯模式   1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。   2) 多点广播:MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(Destination List)。可以使用一条MQ指令将单一消息发送到多个目标...

weixin_34234823的博客 157

WebSphere MQ性能调优浅谈

导读:目前随着我们在中国的WebSphere MQ(MQSeries)用户数量越来越多,越来越多的用户开始对MQ使用时的性能优化问题提出要求,我根据日常积累的经验谈一谈在MQ性能优化方面应该考虑的因素。 关键词:WebSphereMQ 消息中间件 MQ 消息队列   目前随着我们在中国的WebSphere MQ(MQSeries)用户数量越来越多,越来越多的用户开始对MQ使用时的性...

ab316600的博客 305

IBM Websphere MQ的基本概念

<br /> http://huangtut.javaeye.com/blog/286724<br /> <br />1) 队列管理器<br />队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。<br />2) 消息<br />在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。消息有两部分组成:<br />消息描述符(Message Discripti

sly0311的专栏 532
上一篇: JMSWMQ2013: 为队列管理器“QM1”提供的安全性认证无效,连接方式为“Client”,主机名为“192.168.1.1(1415)”。 请检查提供的用户名和密码在您连接至的队列管理器中是否
下一篇: The hierarchy of the type TestTest is inconsistent。It is indirectly referenced from
freewind
博客等级 码龄16年 136粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值