`
JAVA天地
  • 浏览: 676680 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

通过JAVA从MQ读取消息的时候报错及解决

阅读更多

如果是通过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 IBM MQ 接收、发送

    4. **读取消息**:从MQMessage对象中读取接收到的数据,如使用readUTF()或readBytes()方法。 以下是一个简单的Java接收消息示例: ```java import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; import ...

    java客户端从MQ队列接收消息的三种方法

    本篇文章将详细介绍三种不同的方法,帮助Java客户端从MQ队列接收消息。 1. **IBM WebSphere MQ JMS API** IBM的WebSphere MQ提供了一套Java Message Service (JMS) API,允许Java应用程序与MQ队列进行通信。首先,...

    java向MQ发送消息

    JAVA向MQ发送消息, JAVA向MQ发送消息, JAVA向MQ发送消息,

    三种Java向MQ发送消息的方法 -- java代码

    WebSphere MQ是IBM提供的一种高性能、高可靠性的消息中间件,它允许分布式系统中的组件之间通过消息进行通信,而无需直接互相了解对方。在Java开发中,与WebSphere MQ交互是常见的需求。以下将详细介绍三种Java向...

    JAVA实现MQ发送接收消息详解

    Java 实现 MQ 发送接收消息详解 本篇文章将详细介绍如何使用 Java 实现 MQ(Message Queue)发送和接收消息,包括 MQ 的配置、队列管理器的创建、队列的创建、发送和接收消息的 Java 代码。 MQ 配置 要使用 MQ ...

    java IBM MQ 7.5.0 生产者和消费者实例

    IBM提供了一个Java Message Service (JMS) API,允许Java应用程序通过IBM MQ发送和接收消息。JMS API包含两种主要对象:`QueueSender`(生产者)和`QueueReceiver`(消费者)。 3. **生产者实例**: 生产者应用...

    JAVA连接IBM MQ代码

    在IT行业中,Java是一种广泛应用的编程语言,而IBM MQ(原名WebSphere MQ)是IBM提供的消息中间件,用于在不同系统之间可靠地传递数据。本文将深入探讨如何使用Java来连接IBM MQ,以实现跨平台的信息交换。 首先,...

    JAVA发送MQ信息

    MQ是消息中间件的一种,它在分布式系统中扮演着消息传递者的角色,允许不同组件之间通过交换消息进行通信,而无需直接互相依赖。这有助于提高系统的可扩展性和稳定性。 在Java中,我们通常使用开源的消息中间件如...

    Java下操作IBM Websphere MQ的项目案例

    IBM MQ提供了一个消息队列模型,其中消息被发送到队列,并由接收方从队列中取出。这种模型确保了消息的可靠传输,即使发送方和接收方在传输过程中短暂离线,消息也不会丢失。IBM MQ支持各种接口,包括Java Message ...

    java连接mq的demo

    Java连接IBM MQ(WebSphere MQ)的Demo是一个典型的示例,用于展示如何在Java应用程序中与MQ消息中间件进行通信。IBM MQ是一个高效、可靠的消息传递系统,它允许分布式应用程序通过消息传递方式进行通信,从而解耦...

    MQ发送接收消息完整版本下载

    Java MQ通常指的是Java Message Service(JMS),这是一个Java平台上的API,用于在分布式环境中创建、发送、接收和读取消息。JMS允许应用程序创建和交换独立于提供商的消息,这意味着你可以更换消息队列服务而不必...

    基于Java的MQListener消息监听器管理平台.zip

    通过MQListener,用户可以灵活地配置规则来控制消息的处理方式,有效解决消息消费中的阻塞、堆积、处理失败等问题。 项目结构 listener服务依赖 ttpaimqlistenerspringSpring项目依赖 ...

    java访问IBM MQ SSL加密通道

    描述了java程序代码去访问MQ的SSL加密的通道。如何配置JKS,如何配置MQ服务器的SSL秘钥库,如何配置证书制作证书和秘钥库。主要是如何编写java代码去访问SSL通道并取到数据。

    java-MQ学习

    Java MQ,全称为Java消息队列,是一种中间件技术,用于在分布式系统中传递消息,以解耦应用程序组件,提高系统的可扩展性和可靠性。在Java领域,Apache ActiveMQ是广泛应用的开源MQ实现之一,它提供了丰富的特性集和...

    get-msg-from-MQ-using-java.rar_MQ_java mq_java 消息队列_mq get

    本教程将详细讲解如何使用Java客户端从MQ队列中接收消息,主要涉及以下三个核心知识点: 1. **消息队列的基本概念** - 消息队列是一种异步通信机制,它允许应用程序之间通过发送和接收消息进行通信,而不是直接...

    java连接MQ

    Java连接WebSphere MQ(Websphere MQ)是企业级消息传递的一种常见应用场景,它允许Java应用程序与MQ服务器进行通信,实现数据的可靠传输。在Java中,我们可以使用IBM提供的`com.ibm.mq.allclient.jar`库来实现这一...

    MQ消息序号Message Sequence详解

    通过深入理解消息序号的生成、管理及异常处理机制,不仅可以提升MQ系统的稳定性,还能有效应对各种复杂场景下的消息处理挑战。在实际操作中,熟练掌握MQSC命令和系统日志分析技巧,将对维护MQ系统高效运行起到决定性...

    java程序利用mq发送消息

    本话题将聚焦于如何使用Java编程语言来实现通过IBM WebSphere MQ发送消息。 IBM WebSphere MQ,又称为WMQ,是IBM提供的一款强大、可靠的消息中间件,支持多种操作系统和网络环境,能够确保数据在不同系统间的高效...

    MQ java 编程指南

    《MQ Java编程指南》是一本面向Java开发者的深入解析消息队列(MQ)技术的专业书籍。消息队列作为分布式系统中的重要组件,用于解耦应用、实现异步处理以及提高系统的可扩展性。本书旨在帮助Java开发者熟练掌握如何...

    IBM WebSphere MQ消息持久化

    IBM WebSphere MQ是IBM公司开发的消息中间件产品,它能够保证消息在分布式系统中的可靠传递。在IBM WebSphere MQ中,消息持久化是一个重要的特性,它确保了当队列管理器发生异常时,消息数据的安全性和一致性。以下...

Global site tag (gtag.js) - Google Analytics