从 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 客户机组合件
添加全局事务支持
启动和停止跟踪
- 要启动和停止跟踪,请使用应用程序配置文件和 IBM MQ 专用跟踪配置文件。
注意: 以下生成跟踪的步骤既适用于 .NET 可重新发布的托管客户端,也适用于独立的 .NET 客户端。
必须使用应用程序配置文件和特定于 IBM MQ 的跟踪配置文件,因为由于没有完整的 IBM MQ 客户机安装,因此用于启动和停止跟踪的标准工具 strmqtrc 和 endmqtrc不可用。
- 应用程序配置文件(app.config 或 web.config)
- 应用程序需要在应用程序配置文件的 <appSettings> 部分(即 app.config 或 web.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 3将
IBM 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>