`
JAVA天地
  • 浏览: 686165 次
  • 性别: 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代码

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

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

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

    java连接mq的demo

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

    JAVA发送MQ信息

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

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

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

    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