码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • IBM MQ 的JAVA使用案例


    文章目录

    • IBM MQ 的JAVA使用案例
      • IBM MQ依赖
      • 消息传输实例
      • 测试/使用
      • MQMessage
      • 消息类型write?()
      • 为消息设置属性set?Property()
      • IBM服务器端设置消息大小限制
      • 设置队列管理器消息大小限制
      • 设置队列消息大小限制
      • 设置通道消息大小限制
      • 2102报错
      • 参考文档

    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

  • 相关阅读:
    HarmonyOS 学习记录
    助力防疫,基于安防摄像头的人脸佩戴口罩检测
    深度学习人体语义分割在弹幕防遮挡上的实现 - python 计算机竞赛
    【我的前端】网站开发:设计响应式网站的八大因素
    vue pc端/手机移动端 — 下载导出当前表格页面pdf格式
    win10更新后,wsappx占用高内存/资源管理器占用CPU高
    mysql-8.0.31-macos12-x86_64记录
    入行IC | 从小白助理级,到总监专家级,到底要经历怎样的成长阶段呢?
    12:STM32---RTC实时时钟
    线程入门到基础一篇足够
  • 原文地址:https://blog.csdn.net/qq_41653935/article/details/126706819
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号