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