WebSphere MQ - 使用XMS.NET API更改通道定义结构

时间:2014-10-01 13:07:36

标签: .net ibm-mq heartbeat xms

我正在尝试使用XMS.NET API设置MQCD结构属性 - 特别是HeartBeatInterval。

背景:我有使用XMS.NET API的客户端应用程序(在.NET中)从WebSphere MQ读取消息。我使用ClientAcknowledge模式。如果客户端读取消息并且没有确认消息,那么WebSphere MQ会在超时之前等待300秒,并使(退出)原始队列中可用的消息供其他客户端读取消息。

任务:我想将超时从300秒降低。

我们的MQ管理员建议更改频道上的HearBeatInterval属性。但改变它没有任何区别。

显然,以某种方式在客户端设置Channel的HeartBeatInterval属性(以及服务器端通道设置)将使其工作。我试图在客户端应用程序中设置此值。但XMS API没有与MQCD.HeartBeatInterval属性

对应的属性

有关完成降低消息确认超时的任务的任何见解?甚至在客户端设置HeartBeatInterval - 如果是这样的话。

2 个答案:

答案 0 :(得分:0)

当然,心跳间隔的实际协商值将取客户端和服务器端心跳值的最大数量,即I.e。将使用最不频繁的间隔。如果你想要更短的间隔,你需要改变两端。

为什么不使用CCDT,而不是在应用程序中对其进行编码?如果您改变对使用价值的想法并希望在将来降低或提高价值,这将更加灵活。

进一步阅读

  1. Using a client channel definition table with .NET

答案 1 :(得分:0)

我认为您可以使用服务器连接通道的Disconnect interval(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();