首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从ibm读取xml消息

从ibm读取xml消息
EN

Stack Overflow用户
提问于 2022-06-20 21:22:42
回答 1查看 224关注 0票数 1

我试图直接从IBM检索一些XML消息作为可读字符串,并在UI上呈现它们。

我使用了下面的代码,并得到了错误。获得例外: com.IBM.mq.MQException: MQJE001:完成代码'1',原因'2110‘。

我可以做哪些更改来将消息作为字符串返回?但是,当消息是MQSTR格式时,它们将在UI上呈现。

代码语言:javascript
运行
复制
        MQQueueManager _queueManager = null;
        int port = inputPort;
        String hostname = host;
        String channel = chanel;
        String qManager = queuemanager;
        String inputQName = queuename;

        MQEnvironment.hostname = hostname;
        MQEnvironment.channel = channel;
        MQEnvironment.port = port;

        _queueManager = new MQQueueManager(qManager);


        int openOptions = MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING +  MQC.MQOO_BROWSE;


        MQQueue queue = _queueManager.accessQueue( inputQName,
                openOptions,
                null, // default q manager
                null, // no dynamic q name
                null ); // no alternate user id

        System.out.println("MQRead is now connected.\n");
        int depth = queue.getCurrentDepth();
        System.out.println("Current depth: " + depth + "\n");

        if (depth == 0)
        {
            System.out.println("Depth is zero");
        }

        MQGetMessageOptions getOptions = new MQGetMessageOptions();
        getOptions.options = MQC.MQGMO_NO_WAIT + MQC.MQGMO_FAIL_IF_QUIESCING + MQC.MQGMO_CONVERT + MQC.MQGMO_BROWSE_NEXT;

        ArrayList<MessageDTO> myMessages = new ArrayList<>();

        while(true)
        {
            MQMessage message = new MQMessage();


            try
            {
                queue.get(message, getOptions);
                byte[] b = new byte[message.getMessageLength()];
                message.readFully(b);


                System.out.println (new MQHeaderList (message, false));

                String newMessage =  new String(b);
                MessageDTO newMsg = new MessageDTO();
                newMsg.setMessage(newMessage);
                Random rand = new Random();
                newMsg.setMessageNumber(rand.nextInt());


                myMessages.add(newMsg);


                model.addAttribute("myMessages", myMessages);
                System.out.println(myMessages);
                message.clearMessage();
            }
            catch (IOException e)
            {
                System.out.println("IOException during GET: " + e.getMessage());
                break;
            }
            catch (MQException e)
            {
                if (e.completionCode == 2 && e.reasonCode == MQException.MQRC_NO_MSG_AVAILABLE) {
                    if (depth > 0)
                    {
                        System.out.println("All messages read.");
                    }
                }
                else
                {
                    System.out.println("GET Exception: " + e);
                }
                break;
            } catch (MQDataException e) {
                e.printStackTrace();
            }


        }
        queue.close();
        _queueManager.disconnect();
    }

}```
EN

回答 1

Stack Overflow用户

发布于 2022-06-20 23:30:05

我希望这有一天能对某人有所帮助,但是这个问题是由格式错误引起的,我最终使用了RFHUtil,并将消息格式更改为MQSTR,并按需要返回消息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72693130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档