• 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    所测试的依赖类所在包:

    import com.ibm.mq.*;
    
    • 1

    而不是:

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

    消息传输实例

    目录
    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;//格式
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

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

    • 默认4M

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

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

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

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

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

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

    设置队列消息大小限制

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

    设置通道消息大小限制

    在这里插入图片描述

    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

  • 相关阅读:
    融合语言模型中的拓扑上下文和逻辑规则实现知识图谱补全11.18
    doris动态分区开启历史分区
    Log4j2
    Vue Slot插槽:组件化的艺术
    06-JVM对象内存回收机制深度剖析
    超声检测技术(一)
    神经网络基础知识总结与理解
    【Java 进阶篇】JQuery 案例:全选全不选,为选择添彩
    orcal创建索引
    idea 连接远程 docker 并部署项目到 docker
  • 原文地址:https://blog.csdn.net/qq_41653935/article/details/126706819