Программисты JAVA общаются здесь
Anonymous
Отправка сообщения из Java в MQ приводит к ошибке MQ 2063 случайным образом для определенных пользователей
Сообщение
Anonymous » 26 ноя 2024, 06:33
Следующая Java-программа представляет собой пример кода, который используется для отправки сообщения в IBM MQ. Это используется для объяснения проблемы:
Код: Выделить всё
import com.ibm.mq.MQC;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Hashtable;
import java.util.ResourceBundle;
@SuppressWarnings({ "rawtypes", "unchecked","deprecation" })
public class TestIBMMQ {
static String theQueueMgr;
static String theRequestQueue;
static String respQueue;
static String mesgId = null;
static String corrId = null;
static MQQueue objQueue = null;
static String replyQueue;
static String replyQmgr;
static boolean isSSLActive;
public TestIBMMQ() {
}
public static ResourceBundle getProperties(String file) {
ResourceBundle resourceBundle = ResourceBundle.getBundle(file);
return resourceBundle;
}
public static String getFileContent(String path) {
StringBuffer stringbuffer = null;
try {
File file = new File(path);
FileReader filereader = new FileReader(file);
BufferedReader bufferedreader = new BufferedReader(filereader);
stringbuffer = new StringBuffer();
String s = System.getProperty("line.separator");
String s1;
while ((s1 = bufferedreader.readLine()) != null) {
stringbuffer.append(s1);
stringbuffer.append(s);
}
filereader.close();
bufferedreader.close();
} catch (IOException ioexception) {
ioexception.printStackTrace();
}
return stringbuffer.toString();
}
public static void sendMessage(String msgText, MQQueueManager qMgr, boolean isResponse) {
try {
String theQueueMgr = ;
String theRequestQueue = ;
if (theRequestQueue != null && theRequestQueue.length() > 0) {
objQueue = qMgr.accessQueue(theRequestQueue, MQC.MQOO_OUTPUT, null, null, null);
} else {
System.out.println("Request Queue (request_queue) was not configured! Tool now tries to get any response..");
}
MQMessage mqmessage = new MQMessage();
// Added below 2 lines as per Mike's suggestion
if (resBund.getString("message_expiry") != null && resBund.getString("message_expiry").length() > 0) {
mqmessage.expiry = Integer.valueOf(resBund.getString("message_expiry"));
}
// The default value is MQC.MQEI_UNLIMITED (-1), which means that
// the message never expires.
System.out.println("Message expiry set to ... " + mqmessage.expiry);
if (!mesgId.equalsIgnoreCase("")) {
mqmessage.messageId = mesgId.getBytes();
// mqmessage.correlationId = mesgId.getBytes();
} else {
mqmessage.messageId = MQC.MQMI_NONE;
}
if (!corrId.equalsIgnoreCase("")) {
mqmessage.correlationId = corrId.getBytes();
} else {
mqmessage.correlationId = MQC.MQCI_NONE;
}
mqmessage.writeString(msgText);
if (!isResponse) {
mqmessage.replyTotheQueueMgrName = resBund.getString("replyToQmgr");
mqmessage.replyToQueueName = resBund.getString("replyToQueue");
}
MQPutMessageOptions mqputmessageoptions = new MQPutMessageOptions();
objQueue.put(mqmessage, mqputmessageoptions);
System.out.println("Message successfully PUT... ");
} catch (MQException mqexception) {
System.out.println("An MQSeries error occurred : Completion code " + mqexception.completionCode + " Reason code " + mqexception.reasonCode);
System.out.println(mqexception.getCause());
} catch (IOException ioexception1) {
System.out.println("An error occurred whilst writing to the message buffer: " + ioexception1);
ioexception1.printStackTrace();
} catch (Exception exception) {
System.out.println("An error occurred : " + exception.getMessage());
exception.printStackTrace();
} finally {
try {
if (objQueue != null)
objQueue.close();
// qMgr.disconnect();
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws ATSException {
String prop;
if (args.length > 0) {
prop = args[0];
} else {
prop = "
Подробнее здесь: [url]https://stackoverflow.com/questions/79219613/send-message-from-java-to-mq-results-mq-error-2063-randomly-for-certain-users[/url]
1732592003
Anonymous
Следующая Java-программа представляет собой пример кода, который используется для отправки сообщения в IBM MQ. Это используется для объяснения проблемы: [code]import com.ibm.mq.MQC; import com.ibm.mq.MQException; import com.ibm.mq.MQGetMessageOptions; import com.ibm.mq.MQMessage; import com.ibm.mq.MQPutMessageOptions; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Hashtable; import java.util.ResourceBundle; @SuppressWarnings({ "rawtypes", "unchecked","deprecation" }) public class TestIBMMQ { static String theQueueMgr; static String theRequestQueue; static String respQueue; static String mesgId = null; static String corrId = null; static MQQueue objQueue = null; static String replyQueue; static String replyQmgr; static boolean isSSLActive; public TestIBMMQ() { } public static ResourceBundle getProperties(String file) { ResourceBundle resourceBundle = ResourceBundle.getBundle(file); return resourceBundle; } public static String getFileContent(String path) { StringBuffer stringbuffer = null; try { File file = new File(path); FileReader filereader = new FileReader(file); BufferedReader bufferedreader = new BufferedReader(filereader); stringbuffer = new StringBuffer(); String s = System.getProperty("line.separator"); String s1; while ((s1 = bufferedreader.readLine()) != null) { stringbuffer.append(s1); stringbuffer.append(s); } filereader.close(); bufferedreader.close(); } catch (IOException ioexception) { ioexception.printStackTrace(); } return stringbuffer.toString(); } public static void sendMessage(String msgText, MQQueueManager qMgr, boolean isResponse) { try { String theQueueMgr = ; String theRequestQueue = ; if (theRequestQueue != null && theRequestQueue.length() > 0) { objQueue = qMgr.accessQueue(theRequestQueue, MQC.MQOO_OUTPUT, null, null, null); } else { System.out.println("Request Queue (request_queue) was not configured! Tool now tries to get any response.."); } MQMessage mqmessage = new MQMessage(); // Added below 2 lines as per Mike's suggestion if (resBund.getString("message_expiry") != null && resBund.getString("message_expiry").length() > 0) { mqmessage.expiry = Integer.valueOf(resBund.getString("message_expiry")); } // The default value is MQC.MQEI_UNLIMITED (-1), which means that // the message never expires. System.out.println("Message expiry set to ... " + mqmessage.expiry); if (!mesgId.equalsIgnoreCase("")) { mqmessage.messageId = mesgId.getBytes(); // mqmessage.correlationId = mesgId.getBytes(); } else { mqmessage.messageId = MQC.MQMI_NONE; } if (!corrId.equalsIgnoreCase("")) { mqmessage.correlationId = corrId.getBytes(); } else { mqmessage.correlationId = MQC.MQCI_NONE; } mqmessage.writeString(msgText); if (!isResponse) { mqmessage.replyTotheQueueMgrName = resBund.getString("replyToQmgr"); mqmessage.replyToQueueName = resBund.getString("replyToQueue"); } MQPutMessageOptions mqputmessageoptions = new MQPutMessageOptions(); objQueue.put(mqmessage, mqputmessageoptions); System.out.println("Message successfully PUT... "); } catch (MQException mqexception) { System.out.println("An MQSeries error occurred : Completion code " + mqexception.completionCode + " Reason code " + mqexception.reasonCode); System.out.println(mqexception.getCause()); } catch (IOException ioexception1) { System.out.println("An error occurred whilst writing to the message buffer: " + ioexception1); ioexception1.printStackTrace(); } catch (Exception exception) { System.out.println("An error occurred : " + exception.getMessage()); exception.printStackTrace(); } finally { try { if (objQueue != null) objQueue.close(); // qMgr.disconnect(); } catch (MQException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) throws ATSException { String prop; if (args.length > 0) { prop = args[0]; } else { prop = " Подробнее здесь: [url]https://stackoverflow.com/questions/79219613/send-message-from-java-to-mq-results-mq-error-2063-randomly-for-certain-users[/url]