2013-04-15 116 views
0

我是IBM MQ的新手,我的隊列管理器使用tcp通道連接,並且tcp連接廣泛存在,這是我正在使用的代碼片斷。如何以可重用的方式處理頻道內的連接?在IBM MQ客戶機/服務器中處理連接

我正在使用7.5 MQ客戶機,與6.0.5.2 MQ遠程服務器通話。我正確地關閉連接,但是當我運行一個netstat時它說tcp連接在time_wait狀態。這些連接/套接字是否泄漏?

MQQueue mqQueue = null; 
MQQueueManager mqQMgr=null; 
try 
{ 
    //Create connection to queue manager 
    mqQMgr = new MQQueueManager("Queue Manager name", properties); 
    //Access the queue 
    mqQueue = mqQMgr.AccessQueue(QueueName, MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE); 
    for(int i=1;i<2000;i++) 
    { 
    //read the messages 
    mqMsg=new MQMessage(); 
    mqQueue.Get(mqMsg); 
    } 
} 
catch(MQException mqe) 
{ 
    //If no messages in the queue , break. (if not, catch any error) 
} 
finally 
{ 
    mqQueue.Close(); //Close the MQ Queue 
    mqQMgr.Disconnect(); //Disconnect the MQ Manager 
} 

當我運行netstat的,它顯示

TCP x.x.x.x:59092 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59093 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59094 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59095 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59096 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59097 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59098 x.x.x.x:1400 TIME_WAIT 
TCP x.x.x.x:59099 x.x.x.x:1400 TIME_WAIT 
+0

任何輸入信息會有幫助嗎? – Sharpeye500

回答

3

這不是泄漏。套接字關閉後進入TIME_WAIT狀態。一個套接字長時間處於TIME_WAIT狀態是正常的,例如4分鐘,取決於操作系統。