gpt4 book ai didi

java - 关闭 MQ 连接

转载 作者:行者123 更新时间:2023-11-30 11:56:19 24 4
gpt4 key购买 nike

下午好,我写了一个从 IBM MQ 获取公园队列信息的项目,但它在尝试关闭连接时产生了错误。它是用java编写的。在 MQ 机器上的事件查看器中的应用程序下,它显示两个错误。它们是:

“ channel 节目异常结束。 channel 程序‘system.def.surconn’异常结束。查看错误文件中 channel 程序“system.def.surconn”的先前错误消息以确定失败的原因。

另一条消息指出:“从主机 rnanaj (10.10.12.34) 接收时出错通过 tcp/ip 从 rnanaj (10.10.12.34) 接收数据时发生错误。这可能是由于通信故障。 tcp/ip recv() 调用的返回码是 10054 (X'2746')。记录这些值。”

这一定是我尝试连接或关闭连接的方法,下面我有连接和关闭的代码,有什么想法吗??

连接:

_logger.info("Start");

File outputFile = new File(System.getProperty("PROJECT_HOME"), "run/" + this.getClass().getSimpleName() + "." + System.getProperty("qmgr") + ".txt");
FileUtils.mkdirs(outputFile.getParentFile());

Connection jmsConn = null;
Session jmsSession = null;
QueueBrowser queueBrowser = null;
BufferedWriter commandsBw = null;
try {
// get queue connection
MQConnectionFactory MQConn = new MQConnectionFactory();
MQConn.setHostName(System.getProperty("host"));
MQConn.setPort(Integer.valueOf(System.getProperty("port")));
MQConn.setQueueManager(System.getProperty("qmgr"));
MQConn.setChannel("SYSTEM.DEF.SVRCONN");
MQConn.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);

jmsConn = (Connection) MQConn.createConnection();
jmsSession = jmsConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue jmsQueue = jmsSession.createQueue("PARK");

// browse thru messages
queueBrowser = jmsSession.createBrowser(jmsQueue);
Enumeration msgEnum = queueBrowser.getEnumeration();

commandsBw = new BufferedWriter(new FileWriter(outputFile));
//
String line = "DateTime\tMsgID\tOrigMsgID\tCorrelationID\tComputerName\tSubsystem\tDispatcherName\tProcessor\tJobID\tErrorMsg";
commandsBw.write(line);
commandsBw.newLine();

while (msgEnum.hasMoreElements()) {
Message message = (Message) msgEnum.nextElement();
line = dateFormatter.format(new Date(message.getJMSTimestamp()))
+ "\t" + message.getJMSMessageID()
+ "\t" + message.getStringProperty("pkd_orig_jms_msg_id")
+ "\t" + message.getJMSCorrelationID()
+ "\t" + message.getStringProperty("pkd_computer_name")
+ "\t" + message.getStringProperty("pkd_subsystem")
+ "\t" + message.getStringProperty("pkd_dispatcher_name")
+ "\t" + message.getStringProperty("pkd_processor")
+ "\t" + message.getStringProperty("pkd_job_id")
+ "\t" + message.getStringProperty("pkd_sysex_msg");
_logger.info(line);
commandsBw.write(line);
commandsBw.newLine();
}

}

关闭:

finally {
IO.close(commandsBw);
if (queueBrowser != null) { try { queueBrowser.close();} catch (Exception ignore) {}}
if (jmsSession != null) { try { jmsSession.close();} catch (Exception ignore) {}}
if (jmsConn != null) { try { jmsConn.stop();} catch (Exception ignore) {}}
}

最佳答案

根据 the Javadoc for the connection object , stop() 方法的作用是...

Temporarily stops a connection's delivery of incoming messages.

所以 stop() 实际上并没有切断连接。您需要 close() 方法。

关于java - 关闭 MQ 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com