簡體   English   中英

從 ibm mq 讀取 xml 消息

[英]Reading xml messages from ibm mq

我正在嘗試直接從 IBM MQ 檢索一些 XML 消息作為可讀字符串,並將它們呈現在 UI 上。

我使用了以下代碼,我得到了錯誤。 獲取異常:com.IBM.mq.MQException:MQJE001:完成代碼“1”,原因“2110”。

我可以進行哪些更改以將消息作為字符串返回? 但是,當消息的格式為 MQSTR 時,它們會呈現在 UI 上。

        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();
    }

}```

我希望有一天這對某人有所幫助,但問題是由格式錯誤引起的,我最終使用了 RFHUtil 並將消息格式更改為 MQSTR,然后我根據需要取回了我的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM