2011-10-12 295 views
2

我有一個簡單的程序連接到遠程隊列管理器,似乎工作正常,我可以發送和接收消息。但是我注意到,每次連接時,我都會在Windows應用程序事件管理器中發生錯誤:Websphere MQ 7.0.1 C#XMS連接導致10054(X'2746')tcp錯誤

從主機myhost(12.213.143.252)接收時出錯。

從我的主機(12.213.143.252)接收數據時發生錯誤,而不是 TCP/IP。這可能是由於通訊失敗。

來自TCP/IP recv()調用的返回碼是10054(X'2746')。 記錄這些值並告訴系統管理員。

我認爲這可能是我沒有正確斷開客戶端,雖然我不知道我做錯了什麼。下面是代碼我使用的測試連接這仍然是導致此問題:

 XMSFactoryFactory factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);   
     IConnectionFactory cf = factoryFactory.CreateConnectionFactory(); 

     cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, WebSphereConfigObject.QueueManager); 
     cf.SetStringProperty(XMSC.WMQ_HOST_NAME, WebSphereConfigObject.Host); 
     cf.SetIntProperty(XMSC.WMQ_PORT, WebSphereConfigObject.Port); 
     cf.SetStringProperty(XMSC.WMQ_CHANNEL, WebSphereConfigObject.ServerConnectionChannel); 
     cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT); 
     IConnection connection = cf.CreateConnection(); 
     ISession session = connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge); 
     connection.Start(); 
     session.Close(); 
     connection.Stop(); 
     connection.Close(); 

任何幫助,非常感謝!

回答

1

從我所看到的事件10054由隊列管理器進程amqrmppa記錄。當此隊列管理器進程與XMS客戶端應用程序之間的套接字連接突然終止時,會記錄該事件。

正常終止不記錄任何事件。

+0

那麼上面的代碼有什麼問題會導致這個突然終止? – bobwah

+0

不,我沒有在上面的代碼中看到任何錯誤。該代碼不會爲我記錄任何事件。我正在使用MQ v7016。您可能需要使用隊列管理器側面跟蹤來查明發生了什麼問題。 – Shashi

+0

啊好的,我在建立連接時跟蹤了這一點,併爲amqrmppa.exe進程提供了跟蹤文件。然而,我不知道該在1400行文件中查找可能發生的事情或該怎麼做的事情,從哪裏開始? – bobwah

0

儘量不要使用這兩個.close調用!

s。 [1]:表示不再使用http://www-01.ibm.com/support/docview.wss?uid=swg27024064

關閉和斷開連接正確 代碼應用程序正確關閉或處置XMS對象。如果不這樣做,特別是IConnection或ISession實例,則可能會限制與隊列管理器的連接數。

+2

對不起,我不確定你的意思,我不應該使用哪一個,爲什麼? – bobwah