使用独立 IBM MQ .NET 客户机

IBM® MQ 8.0.0 Fix Pack 2 开始, IBM MQ .NET 客户端为您提供打包和部署 IBM MQ .NET 程序集的能力,而无需在生产系统上使用完整的 IBM MQ 客户端安装来运行您的应用程序。

关于本任务

IBM MQ 8.0.0 Fix Pack 2 中,您可以在安装了完整 IBM MQ 客户机的计算机上构建 IBM MQ .NET 应用程序,然后将 IBM MQ .NET 组合件(即 amqmdnet.dll)与应用程序一起打包,并将其部署到生产系统上。

您构建和部署的应用程序可以是传统的 Windows .NET 应用程序、服务或 Microsoft Azure Web/Worker 应用程序。

在此类部署中, IBM MQ .NET 客户机仅支持与队列管理器的受管连接方式。 服务器绑定和非受管客户机方式连接不可用,因为这两种方式需要完整的 IBM MQ 客户机安装。 使用这两种方式的任何尝试都将导致应用程序异常。

过程

在应用程序中引用 IBM MQ .NET 客户机组合件

  • 以与先前发行版相同的方式引用应用程序中的 amqmdnet.dll 组合件。
    amqmdnet 组合件的 CopyLocal 属性设置为 True ,以确保将 amqmdnet 组合件复制到应用程序的 bin 目录。 设置此属性还可帮助应用程序打包工具打包必需的二进制文件,以便在生产系统以及 Microsoft Azure PaaS 云环境上进行部署。

添加全局事务支持

  • 确保在机器上随应用程序自身一起部署了监视器应用程序 WMQDotnetXAMonitor。
    如果应用程序使用 IBM MQ .NET 管理的全局事务功能,那么它还必须将 WMQDotnetXAMonitor 与应用程序本身一起部署在机器上。 需要使用此实用程序来恢复任何不确定的事务。

启动和停止跟踪

  • 要启动和停止跟踪,请使用应用程序配置文件和 IBM MQ 专用跟踪配置文件。
    注意: 以下生成跟踪的步骤既适用于 .NET 可重新发布的托管客户端,也适用于独立的 .NET 客户端。

    必须使用应用程序配置文件和特定于 IBM MQ 的跟踪配置文件,因为由于没有完整的 IBM MQ 客户机安装,因此用于启动和停止跟踪的标准工具 strmqtrcendmqtrc不可用。

    应用程序配置文件(app.configweb.config
    应用程序需要在应用程序配置文件的 <appSettings> 部分(即 app.configweb.config 文件)中定义 MQTRACECONFIGFILEPATH 属性。 (应用程序配置文件的实际名称取决于您的应用程序名称。) MQTRACECONFIGFILEPATH 属性的值指定 IBM MQ 特定跟踪配置文件 mqtrace.config 的位置路径,如下例所示:
    <appSettings>
    <add key="MQTRACECONFIGFILEPATH" value="C:\MQTRACECONFIG"/>
    </appSettings>
    
    如果在所指定应用程序配置文件的路径中找不到 mqtrace.config 文件,那么将禁用跟踪。 不过,如果应用程序有权写入当前目录, First Failure Support Technology (FFST) 和错误日志会在应用程序的目录中创建。
    IBM MQ 特定跟踪配置文件(mqtrace.config
    mqtrace.config 文件是一个 XML 文件,其中定义了用于启动和停止跟踪的属性、跟踪文件的路径以及错误日志的路径。 下表描述了这些属性。
    表 1. mqtrace.config 文件中定义的属性
    属性 描述
    MQTRACELEVEL

    0:停止跟踪(缺省值)。

    1:启动包含较少详细信息的跟踪。

    2:启动包含完整详细信息的跟踪(推荐)。

    MQTRACEPATH 指向将在其中创建跟踪文件的文件夹。 如果路径为空白或未定义 MQTRACEPATH 属性,那么将使用应用程序的当前目录。
    MQERRORPATH 指向将在其中创建错误日志文件的文件夹。 如果路径为空白或未定义 MQERRORPATH 属性,那么将使用应用程序的当前目录。
    以下示例显示了样本 mqtrace.config 文件:
    <?xml version="1.0" encoding="utf-8"?>
    <traceSettings>
      <MQTRACELEVEL>2</MQTRACELEVEL>
      <MQTRACEPATH>C:\MQTRACEPATH</MQTRACEPATH>
      <MQERRORPATH>C:\MQERRORLOGPATH</MQERRORPATH>
    </traceSettings>
    

    通过更改 mqtrace.config 文件中 MQTRACELEVEL 属性的值,可以在应用程序运行时动态启动和停止跟踪。

    运行的应用程序必须具有 MQTRACELEVEL 属性所指定的文件夹的创建和写许可权,才能生成跟踪文件。 在 Microsoft Azure PaaS 环境中运行的应用程序也必须确保类似的访问权限,因为使用 IBM MQ .NET 程序集在 Microsoft Azure PaaS 中运行的网络应用程序可能没有创建和写入权限。 如果应用程序不具有所指定文件夹的创建和写许可权(必需),那么将无法生成跟踪、首次故障数据捕获 (FDC) 和错误日志。

启用绑定重定向

  • 要在编译时将 "IBM MQ".NET程序集的引用绑定到后续版本的程序集,请在应用程序配置文件中添加 "<dependentAssembly>属性。
    app.config 文件中的以下示例片段将重定向使用 IBM MQ 8.0.0 Fix Pack 2 (8.0.0.2) 版本的 IBM MQ .NET 组合件编译的应用程序,但稍后将应用修订包 IBM MQ 8.0.0 Fix Pack 3IBM MQ.NET 组合件更新为 8.0.0.3
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <!-- amqmdnet related binding redirect -->
        <dependentAssembly>
          <assemblyIdentity name="amqmdnet"
                             publicKeyToken="dd3cb1c9aae9ec97"
                             culture="neutral"/>
          <codeBase version="8.0.0.2"
                href="file:///amqmdnet.dll"/>
          <bindingRedirect oldVersion="1.0.0.3-8.0.0.2"
                           newVersion="8.0.0.3"/>
          <publisherPolicy apply="no"/>
        </dependentAssembly>
      </assemblyBinding>
    </runtime>