2013-07-24 4 views
0

그래서 WebSphere에 메시지를 보내고 성공적으로 대기열에 넣었습니다. 그러나 다른 대기열에서 가져 오는 데 문제가 있습니다. 그러나 내가 회선을 사용하여 메시지를 보내는 경우에 나는 무엇을 알아 냈는가?Java - writeUTF가 내 메시지에 "n"을 추가합니다. 왜?

inputMessage.writeUTF (message); 메시지되면서 :

XML 파일 저장소이다
basket/argos/1001?authToken=fgTSdfs&trustToken=gdf43FsfSFefs33&apiKey=ahjd9234imnmdfnwi&sig=abcde&currency=GBP 

, 그 메시지의 전면에 "N"를 추가한다. 아무도 그 이유를 말할 수 있습니까? 코드는 아래와 같습니다.

MQQueueConnectionFactory cf = new MQQueueConnectionFactory(); 

    // Config 
    cf.setHostName(hostname); 
    cf.setPort(portNumber); 
    cf.setQueueManager(queueManager); 
    cf.setChannel(channel); 

    //MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection(); 
    //MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 
    //MQQueue queue = (MQQueue) session.createQueue(inputQueue); 
    //MQQueue queue = (MQQueue)session. 
    //MQQueueSender sender = (MQQueueSender) session.createSender(queue); 
    //MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(queue);  


    MQQueueManager qMgr = new MQQueueManager(queueManager); 
    System.out.println("Queue manager created"); 

    int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | 
    MQC.MQOO_OUTPUT ; 
    System.out.println("MQ Options created"); 

    MQQueue mqInputQueue = 
     qMgr.accessQueue(inputQueue, 
       openOptions); 

    System.out.println("Queue created"); 

    MQMessage inputMessage = new MQMessage(); 
    inputMessage.writeUTF(message); 
    System.out.println("message created and sent"); 

    MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults, 
    // same as 
    // MQPMO_DEFAULT 
    // constant 
    System.out.println("Queue options created"); 

    // put the message on the queue 
    mqInputQueue.put(inputMessage,pmo); 
    System.out.println("Message put on queue"); 
    mqInputQueue.close(); 
+0

어떻게 대기열에서 메시지를 읽고을 ? 또한 writeUTF 대신 writeString을 사용해 보셨습니까? 가끔씩 writeBytes (String) 메소드를 사용할 수 있습니다. 하지만 인코딩 문제와 관련이 있다고 생각합니다. –

답변

0

MQMessage는 DataInput 및 DataOutput에서 파생 된 것 같습니다. 나는 writeUTF가 DataOutputStream에서와 같은 것을하고 있다고 추측하고있다.

당신은 도움이 대답을 참조 할 수 있습니다

Why does DataOutputStream.writeUTF() add additional 2 bytes at the beginning?

당신은 몇 가지 옵션이 있습니다

inputMessage.write(message.getBytes("UTF-8"));

또는 아마

inputMessage.writeString(message);