通过JAVA从MQ读取消息的时候报错及解决
来源:互联网 发布:新浪微博淘宝客 编辑:程序博客网 时间:2024/05/05 09:29
如果是通过JAVA将消息写入到MQ,再通过JAVA去读取消息,采用MQMessage读消息的方法readUTF()去读取的时候,就不会报错,可以正常读出来。如果采用在MQ资源管理器中插入测试消息或者是通过另外一台MQ服务器往当前MQ服务器通过远程队例写消息过来,通过JAVA读取出会错,我这里疑点有两个:
1、通过MQ资源管理器放入的消息的编码是什么?是否在读消息的时候需要指定读消息的编码?我通过JAVA进入的编码为1381,读的时候也是1381
2、我现在JAVA这边的MQ LIB是从WEBSPHERE6中取出来的,因为MQ7中带的JAR包老是报一些类不存在,现在的MQ服务是V7,不知道是否与这个有关。
个人感觉第一种原因的可能性最大,但不知道MQ的默认字体是什么?
通过命令DISPLAY QMGR可以查看到当前MQ使用的默认字符集为1381,其它的地方也说MQ在WINDOWS上安装的时候默认字符集为1381,可是我通过JAVA程序去读的时候,设置的CCSID也为1381,也是读的时候老是报如下错误:
java.io.EOFException
at java.io.DataInputStream.readFully(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at com.ibm.mq.MQMessage.readUTF(MQMessage.java:1229)
at test.MessageByMQ.getMessage(MessageByMQ.java:123)
at test.MessageByMQ.main(MessageByMQ.java:146)
我通过JAVA往里面放消息设置的CCSID也为1381却可以正确读出来,但这里就搞不懂为什么读不出来了,
难道是上面提到的第三个原因,我的JAR包是V6的,MQ是V7的?
基本解决:
原来读消息的方法为:readUTF()
但是这种方式在其它的应用程序采用writeUTF写入消息的时候不会报错,就是我上面提到的当前的JAVA程序可以读出该程序中写入的消息,
但是通过MQ资源管理器放入的测试消息就不是UTF这样的格式的,所以会报错,这说面从MQ中读消息的时候读取的格式必须与放入消息的格式相兼容,否则读取消息的时候会报错。
后来尝试采用readLine的方式去读取,可以正常读出来,但是如果写入的是XML这样的消息,采用readLine就不行了,后面尝试readStringOfCharLength方法,可以正常读出客户端应用程序通过writeBytes方法写入的消息,也可以正常读出通过MQ客户端放入的测试报文,
这个问题搞了我一整天,终于可以暂时放一下了。
读的代码如下:
...
MQMessage retrieve = new MQMessage();
String message=retrieve.readStringOfCharLength(32000).trim();
...
本文出自:冯立彬的博客
- 通过JAVA从MQ读取消息的时候报错及解决
- 通过JAVA从MQ读取消息的时候报错及解决
- JAVA从MQ读取消息的时候报错及解决
- mq的链接 消息读取与存放
- java 通过jmx获取active mq队列消息
- 【消息队列MQ】从MQ种类说起
- 【消息队列MQ】从MQ种类说起
- IBM Websphere MQ _02 MQ消息队列、通道、消息的创建及传输
- 关于SharePoint通过IP访问的时候报错问题
- mq的消息调用
- xcode7发送session请求的时候报错解决
- 解决butterknife添加依赖的时候报错
- 消息队列mq的原理及实现方法
- 消息队列mq的原理及实现方法
- 使用sqoop从Oracle或mysql抽取数据到HDFS遇到的报错及解决
- java读取过大的excel表的时候报内存溢出的错误的解决办法
- 启动服务器的时候后台没有报错,但是通过浏览器访问项目的时候报404
- 理解JAVA MQ消息中间件
- w
- 查询 数据库所有用户表 的记录,对分析数据库表的结构很有用,很方便,贴出来,备用!
- SQL SERVER标量表达式的隐式转换
- 劳动仲裁手续
- 流量多少 程序统计(已发电脑报)
- 通过JAVA从MQ读取消息的时候报错及解决
- JAVA学习笔记一
- 数据库学习
- 计算1的个数
- JS 取 URL参数
- JAVA数据库基本操作
- 简单录、放音并保存为wav文件程序
- WSP Content Type
- fedora 下mysql 开发