如何在Vb.net应用程序的AMQCLCHL.TAB文件中使用CLNTCONN通道

时间:2017-01-09 07:42:15

标签: vb.net ibm-mq

在我的Vb.net应用程序中,我正在使用IBM MQ v7.5托管客户端连接来连接到队列管理器。到目前为止,我已在.Config文件中提供了频道名称和主机名,并调用以下内容:

MQQueueManager(Qmanagername, Channel, Host)

但是现在我有一个带有频道详细信息的AMQCLCHL.TAB文件。如何让我的Vb.net应用程序使用AMQCLCHL.TAB文件中的通道名称和主机名。

1 个答案:

答案 0 :(得分:1)

您需要让应用程序知道通道表文件的位置。 IBM Knowledge center显示可以使用托管客户端连接类型以三种方式完成此操作:

  • 使用.NET应用程序配置文件。在CHANNELS部分中,使用ChannelDefinitionDirectory键指定表所在的目录,使用ChannelDefinitionFile指定文件名。
  • 使用环境变量MQCHLLIB指定表所在的目录,使用MQCHLTAB指定表的文件名。
  • 使用客户端配置文件。在CHANNELS节中,使用ChannelDefinitionDirectory属性指定表所在的目录,使用ChannelDefinitionFile指定文件名。

然后,您可以更改您的呼叫以删除频道和主机名,它将使用上述三种方式之一拾取您指定的频道表。

New MQQueueManager(Qmanagername)

更新以包含评论中的其他信息

如果您的应用程序在与队列管理器相同的服务器上运行,则默认情况下,如果您不强制它使用客户端模式,它将使用服务器绑定以非托管模式连接。这在Knowledge Center

中有详细描述

您可以通过设置环境变量NMQ_MQ_LIB来强制它进入客户端模式。

对于非托管MQ客户端模式,请使用NMQ_MQ_LIB=mqic.dll

对于托管客户端模式,请使用NMQ_MQ_LIB=managed

MQC.TRANSPORT_PROPERTY哈希表属性也可用于强制它使用客户端模式。

非托管MQ客户端模式示例:

Hashtable properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, "MQC.TRANSPORT_MQSERIES_CLIENT");
return new MQQueueManager(queueManagerName, properties);

托管MQ客户端模式示例:

Hashtable properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED");
return new MQQueueManager(queueManagerName, properties);