0
我做了一個Java應用程序來連接到MQ隊列併發送消息。它使用定時器多次調用該函數,因此當有消息記錄在另一個隊列中時,獲取並將其發送給另一個隊列。如何正確關閉與MQ Manager的連接?
mensajeHost = dataqueue.read(Constantes.CRITERIO_LECTURA_DQ,Constantes.DQGET_TIEMPO_MAXIMO, "GE");
if (mensajeHost != null) {
comando = mensajeHost.getString();
key = comando.substring(Constantes.S_IND_KEY_ENT_EE, Constantes.E_IND_KEY_ENT_EE);
qmgr = comando.substring(Constantes.S_IND_QMGR_ENT_EE, Constantes.E_IND_QMGR_ENT_EE);
qr = comando.substring(Constantes.S_IND_QR_ENT_EE, Constantes.E_IND_QR_ENT_EE);
ql = comando.substring(Constantes.S_IND_QL_ENT_EE, Constantes.E_IND_QL_ENT_EE);
codigo = comando.substring(Constantes.S_IND_CODIGO_ENT_EE, Constantes.E_IND_CODIGO_ENT_EE);
mensaje2 = comando.substring(Constantes.S_IND_MENSAJE_ENT_EE, Constantes.E_IND_MENSAJE_ENT_EE);
mensaje2 = mensaje2.trim();
timeout = comando.substring(Constantes.S_IND_TIMEOUT_ENT_EE, Constantes.E_IND_TIMEOUT_ENT_EE);
dest = func.obtenerPorKey(destinos, Constantes.KEY_COLA_REQ + codigo); //Obteniendo par de colas necesarias!!
if(dest == null)
throw new Exception(Constantes.DEST_ERROR);
salida = manager.accessQueue(dest.getQueue(), MQC.MQOO_OUTPUT); //Seteando cola de response!!
mensaje.writeBytes(mensaje2);
mensaje.messageId = mensajeHost.getKeyString().getBytes();
mensaje.correlationId = mensajeHost.getKeyString().getBytes();
mensaje.format = MQC.MQFMT_STRING;
salida.put(mensaje);
salida.close();
manager.disconnect();
}
我收在計時器的每個調用的端部的連接到隊列,但似乎太多信道連接被打開,然後將其過載它。所以,我想知道我該如何做到這一點?
我沒有把它放在代碼中,因爲它太長了,但實際上有一個try/catch打印在一個登錄異常,並沒有發生。 – Xanathos
最後放置您的disconnect()。 – Aliti