2014-10-01 42 views
0

我正在嘗試設置MQCD結構屬性 - 特別是使用XMS.NET API的HeartBeatInterval。WebSphere MQ - 使用XMS.NET API更改通道定義結構

背景:我有使用XMS.NET API從WebSphere MQ讀取消息的客戶端應用程序(使用.NET)。我使用ClientAcknowledge模式。如果客戶端讀取消息但未確認,則WebSphere MQ在超時前等待300秒,並使原始隊列中可用的消息(撤銷)供其他客戶端讀取消息。

任務:我想從300秒降低超時。

我們的MQ管理員建議更改通道上的HearBeatInterval屬性。但改變它並沒有什麼區別。

顯然,以某種方式設置客戶端的Channel's HeartBeatInterval屬性(以及服務器端通道設置)將使其工作。我正試圖在客戶端應用程序中設置此值。但是XMS API沒有對應於MQCD.HeartBeatInterval屬性的屬性

在完成降低消息確認超時的任務方面有何洞見?甚至在客戶端設置HeartBeatInterval - 如果是這樣的話。

+0

爲什麼要降低超時時間?爲什麼不回覆信息? – Shashi 2014-10-01 14:27:04

+0

我們在正常流程中確認消息。但是,如果客戶端不正常掛斷,我們希望處理這種情況。我們希望其他客戶端實例能夠在消息返回隊列之前等待300秒,以便能夠更快地處理消息。我們在負載均衡的設置中運行多個客戶端應用程序實例任何想法如何降低超時? – screenname 2014-10-02 13:46:28

回答

0

當然,心跳間隔的實際協商價值將取客戶端和服務器端心跳值I.e中的最大值。將使用最不頻繁的時間間隔。如果你想要更短的時間間隔,你需要改變兩端。

而不是在您的應用程序中編碼它,爲什麼不使用CCDT?如果您改變對使用價值的看法,並希望在未來降低價格或提高價值,這種方法更加靈活。

進一步閱讀

  1. Using a client channel definition table with .NET
+0

感謝您的建議。如果我採用CCDT方法,您是否有任何關於如何從XMS.NET API使用它的信息/樣本/材料。據我所知,客戶端應用程序必須以某種方式在MQ中引用此CCDT條目。 – screenname 2014-10-02 15:36:38

+0

在答案文字中添加了一個鏈接 – 2014-10-02 22:44:29

0

我想你可以使用斷開間隔(DISCINT)服務器連接通道的屬性,以終止由應用程序都掛連接。默認DISCINT設置爲0,這意味着它被禁用。您可以設置一個適合您需求的值。在這裏閱讀更多:http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.con.doc/q081860_.htm

這是在XMS .NET應用程序中使用CCDT的示例片段。

 // Get an instance of factory. 
     factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ); 

     // Create WMQ Connection Factory. 
     cf = factoryFactory.CreateConnectionFactory(); 

     // Use CCDT URL for client connection. 
     cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QM1"); 
     cf.SetStringProperty(XMSC.WMQ_CCDTURL, "file://C:\\ProgramData\\IBM\\MQ\\qmgrs\\QM1\\@ipcc\\AMQCLCHL.TAB"); 

     // Create connection. 
     connectionWMQ = cf.CreateConnection();