如何正确设置IBM WebSphere MQ 实现群发消息

如何正确设置IBM WebSphere MQ 实现群发消息,第1张

1.现在的问题是建立了共享队列INPUTQ 后,在QMGRI里面压根看不到共享队列。。

谁能告诉我为什么么?

大哥你怎么看的?QL CLUSTER属性设置对了吗?

DEF QL(YOURQNAME) CLUSTER(REPOS_NAME)

你看的是QCLUSTER吗?

DIS QC(*)

2.往一个队列管理器里的队列里发消息

其他的所有对立管理器的本地队列都能收到消息

太简单了,注意RFHUTIL里面有个BIND属性,不要设置成OPEN,必须是NOT_FIXED;或者多次使用amqsputc多次打开,不要一次拼命放消息,都可以看到分发效果,默认负载均衡的算法是ROUND_ROBIN

3.好了,上面的问题解决了。。

不过现在对WebSphere MQ的功能产生了怀疑,

我真想捧腹大笑

4.应用程序只能主动去询问MQ,指定的队列中有消息否。要是这样的话,那不是要轮询指定的队列?难道不能让MQ将消息直接推送到应用程序么?

去看看TRIGGER, MDB有关的资料,我不想费口舌了。当你学会基础之前STOP MAKING JUDGEMENTS.

使用引用消息传送文件

以下 *** 作均以admin用户为例:

1. 将admin用户加入administrator和mqm用户组,重新登录;

2. 修改MQ服务的登录用户为admin,然后重新启动MQSeries服务;

3. 修改MQ DCOM组件的登录用户为“启动用户”,这样当以admin用户使用MQ资源管理器时,该DCOM组件将以admin用户的身份运行;关闭MQ资源管理器并重新打开,以使修改生效。

4. 启动Queue Manager,以QMA(发送文件,在MACHINE1服务器上)和QMB(接受文件,在MACHINE2服务器上)为例;

5. 创建MQ对象:

1)在QMA上:

define chl(chl1) chltype(sdr) trptype(tcp) conname('machine2') +

xmitq(xmitq) msgdata(FLATFILE) +

msgexit(' D:\IBM\WMQ\Tools\c\Samples\Bin\amqsxrm(MsgExit) ')

define ql(xmitq) usage(xmitq)

define chl(report) chltype(rcvr) trptype(tcp) replace

define qr(qr) rname(dq) rqmname(QMB) xmitq(xmitq) replace

2)在QMB上:

define chl(chl1) chltype(rcvr) trptype(tcp) +

msgexit(' D:\IBM\WMQ\Tools\c\Samples\Bin\amqsxrm(MsgExit) ') +

msgdata(FLATFILE)

define chl(report) chltype(sdr) trptype(tcp) conname('MACHINE1')

xmitq(QMA)

define ql(QMA) usage(xmitq)

注:如果使用MQ提供的接样例程序amqsgrm.exe接收文件,则作以下3)之后的设置,也可另写接受程序直接接收消息并获得已送达数据文件的名称。

3)在QMB上(可选):

define ql(initq)

define pro(proc) applicid('D:\IBM\WMQ\Tools\c\Samples\Bin\amqsgrm')

define ql(dq) initq(initq) process(proc) trigger trigtype(first)

在 MQ 服务中为 QMB 创建“触发器监控器”服务,设定监控队列为 INITQ ;并启动;

6. 在发送端启动发送通道chl1,在接收端启动发送通道report;

此时所有的配置已经完成,可以使用样例中的amqsprm.exe程序发送文件:

amqsprm -m QMA -i d:\tmp\src\srcfile.name -o d:\tmp\dest\destfile.name -q QR -t FLATFILE -w 10

7. 查验d:\tmp\dest\destfile.name文件已经产生。

[TOC]

Spring Boot作为简化Spring开发的框架,已经为我们集成了ActiveMQ和RabbitMQ。只需在Spring Boot配置几个MQ的连接方式即可开箱即用。大大简化了开发配置过程。

Spring的JavaConfig相比传统的XML的配置方式使得配置更加的可靠和方便。

本文将会说明如何用JavaConfig的方式将Spring与IBM WebSphere MQ(以下简称IBM MQ)集成配置,也可以作为其他MQ的配置参考。

17年后官方maven仓库以有相关依赖

IBM MQ相关的连接依赖包为 com.ibm.mq.allclient.jar ,该包不存在于公共Maven仓库,所以我们需要找到该依赖包并手动安装到我们本机的Maven仓库中。

该依赖包位于 [IBM MQ 安装路径]\java\lib 下,Windows下的默认安装路径为 C:\Program Files\IBM\WebSphere MQ\ ,Linux下的默认安装路径为 /opt/mqm/ 。可以将该包复制到开发机上。

通过以下命令安装该包到本地仓库

在Idea中可以按四次Shift键调出全局搜索框,键入Execute Maven Goal,等待搜索结果后按回车,即可执行Maven命令, 在此执行命令时不需要键入命令开头的 mvn

编辑项目pom.xml文件,添加以下三个依赖,分别为

配置Spring Boot配置文件,application.yml,此处用的是yaml格式配置文件,application.properties的配置方法可以参考Spring Boot的说明。

建立 JmsConfig 类,添加注解 @Configuration ,并将以上属性注入到此类。

在JmsConfig类添加以下方法。

不配置该类则每次与MQ交互都需要重新创建连接,大幅降低速度。

不使用事务可以跳过该步骤。如需使用事务,可添加注解 @EnableTransactionManagement 到程序入口类中,事务的具体用法可参考Spring Trasaction。

JmsOperations为JmsTemplate的实现接口。

重要:不设置setReceiveTimeout时,当队列为空,从队列中取出消息的方法将会一直挂起直到队列内有消息

可直接使用jmsOperations的convertAndSend(String, Object)方法,第一个参数为队列名称,第二个参数为需发送的对象。

重要:发送的对象需实现序列化接口

可直接使用jmsOperations的receiveAndConvert(String)方法,第一个参数为队列名称。

如需使用事务,只需在方法添加注解 @Transactional(value = "jmsTransactionManager") 即可。

有问题请留言


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11615369.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存