我们需要在处理有效负载后使用来自请求队列的相同消息回复响应队列。我在尝试将字符串写入传入消息时遇到问题。处理消息被附加到现有的有效负载中。这是我正在使用的代码片段
public void readFromQueue(String reqQueue, String queueMgrName) {
int depth = 0;
MQQueueManager queueMgr = null;
MQQueue queue = null;
MQHeaderList headerList = null;
try {
queueMgr = getQueueManager(); //queue manager is initiated
queue = getQueue("get", queueMgr); // queue is intiated
MQGetMessageOptions getOptions = new MQGetMessageOptions(); // Message GET options
getOptions.options = MQConstants.MQGMO_WAIT + MQConstants.MQGMO_FAIL_IF_QUIESCING +
MQConstants.MQGMO_COMPLETE_MSG +
MQConstants.MQGMO_PROPERTIES_FORCE_MQRFH2;
byte[] b = null;
while (true) {
try {
message = new MQMessage();
queue.get(message, getOptions);
headerList = new MQHeaderList(message, true);
processMessage(headerList, message);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
public void processMessage(MQHeaderList headerList, MQMessage message) {
String receivedRequest = headerList.getBody().toString();
/* ---- Message processing logic here ---- */
message.writeString(outMessage);
writeToQueue(message);
}
public void writeToQueue (MQMessage putMsg)
throws MQDataException, ConfigurationException {
MQQueueManager queueMgr = null;
MQQueue queue = null;
try {
queueMgr = getQueueManager();
queue = getQueue("put", queueMgr);
MQPutMessageOptions pmo = new MQPutMessageOptions();
queue.put(putMsg, pmo);
queueMgr.commit();
}
catch (Exception mqex) {
System.out.println(mqex);
}
}
有效负载消息示例:
{
Msg:{
MsgHeader: {
headerKey1: headerValue1,
headerKey2: headerValue2
},
MsgBody: {
bodyKey1: bodyValue1,
bodyKey2: bodyValue2
}
}
响应消息中的预期有效负载:
{
Msg:{
MsgHeader: {
headerKey1: headerValue1,
headerKey2: headerValue2
},
MsgBody: {
newBodyKey1: newBodyValue1,
newBodyKey2: newBodyValue2,
}
}
响应消息中的实际有效负载:(附加到实际有效负载而不是替换它)
{
Msg:{
MsgHeader: {
headerKey1: headerValue1,
headerKey2: headerValue2
},
MsgBody: {
bodyKey1: bodyValue1,
bodyKey2: bodyValue2
}
}
{
Msg:{
MsgHeader: {
headerKey1: headerValue1,
headerKey2: headerValue2
},
MsgBody: {
newBodyKey1: newBodyValue1,
newBodyKey2: newBodyValue2,
}
}
请帮我解决这个问题