IBM MQ 的JAVA使用案例

IBM MQ 的JAVA使用案例

IBM MQ依赖

依赖:

<dependency>
    <groupId>com.ibm.mq</groupId>
    <artifactId>com.ibm.mq.allclient</artifactId>
    <version>9.2.3.0</version>
</dependency>

所测试的依赖类所在包:

import com.ibm.mq.*;

而不是:

import com.ibm.msg.client.wmq.compat.base.internal.*;

消息传输实例

目录
core:读取和初始化配置
event:消费接口
websphere:消息主体为String和Bytes的测试实例
在这里插入图片描述

测试/使用

修改mqconfig.properties配置后,可以不修改其他代码,直接跑websphere下的两组测试用例,创建默认队列管理器,可传输的文件大小最大为64M左右。

测试sender发送的图片源在resources/img下
测试receiver接收到的文件放在resources/img下

MQMessage

基本属性如下

MQMessage myMessage = new MQMessage();
myMessage.encoding = 546;//编码
myMessage.characterSet = 1381;//字符集
myMessage.expiry = -1; // 设置消息不过期,默认是-1
myMessage.format =  MQC.MQFMT_STRING;//格式

encoding:
characterSet :消息为字符串时,需要设置,否则报错。
expiry:设置消息不过期,默认-1
format: 消息为字符串时,需要设置,否则报错。MQMD 格式字段。给出描述消息数据性质的内置格式名称或用户定义的格式名称。其初始值是特殊值 MQFMT_NONE。

消息类型write?()

消息主体包括多种类型,通过MQMessage::write?()方法指定

在这里插入图片描述

为消息设置属性set?Property()

如果消息主体为视频的时候,我们希望带上视频的文件名、封面图片、拍摄日期等属性,可以通过以下方式添加,并再接收者中接收,测试案例见demo。

//TODO 设置属性
myMessage.setStringProperty("name","hello.mp4");
byte[] image = ...
myMessage.setBytesProperty("image",data);

//TODO 接收属性
String name = myMessage.getStringProperty("name");

在这里插入图片描述

IBM服务器端设置消息大小限制

  • 默认4M

  • 最大消息传输大小在服务器端设置,可配置最大消息限制的有3个地方(如下),设置完以后,重启队列管理器。
    1.队列管理器
    2.队列
    3.通道

  • 在设置的时候,原则上以上三者最大消息大小限制的关系为: 队列管理器>=队列>=通道
    注意:最大只能设置为100M(104857600)

  • 在Java中可以查询最大消息传输大小,经过测试,这里获得的是通道的最大长度。

//获取通道的最大消息限制
MQQueueManager::getMaximumMessageLength();

设置队列管理器消息大小限制

右键队列管理器,属性
在这里插入图片描述

设置队列消息大小限制

设置后可不重启
在这里插入图片描述

设置通道消息大小限制

在这里插入图片描述

2102报错

在传>64M左右的文件,Java控制台报错代码2102,大概原因:
在这里插入图片描述

查找了相关资料,创建队列管理器的时候使用了默认配置,导致单条消息大小限制为(2+3)40964kb = 80M,除去一些管理开销,大概在63M、64M上下。可以通过以下方式修改限制。修改完后重启队列管理器
参考:
https://blog.csdn.net/firefight/article/details/1886483
在这里插入图片描述

参考文档

https://www.ibm.com/docs/zh/ibm-mq/9.1

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值