任务:消息-使用一个Windows服务来启动WebSphere MQ File Transfer Edition客户端代理
在用户的桌面上用 IBM WebSphere MQ File Transfer Edition 客 户端代理替代 FTP 客户端是向这些文件传输提供企业可见性和可管理性的一个好 方法。用户可以启动 WebSphere MQ File Transfer Edition 代理,或将其放置 到启动文件夹中让 Windows 自动启动它。但如果这个客户端代理需要在 Windows 服务器而不是在桌面上运行,应该怎么办呢?毕竟服务器上没有用户会 话和启动文件夹。可以从 fteStartAgent 创建一个服务,但这种服务启动一个子 进程,因此 Windows 很难监控该进程以重新启动客户端代理。也可以直接调用 fteStartAgent 调用的类,但这需要使用一些没有建档的(undocumented)接口 ,这些接口可能会在未来的版本中更改。如果可能,最好避免使用未建档的功能 。这期 “任务:消息” 将演示如何使用 fteStartAgent 和 WebSphere MQ 触发机制来解决这个问题。
简介
在我最早的 WebSphere MQ File Transfer Edition 部署中,我 的客户端想在一些无人值守的 Windows 服务器上运行 WebSphere MQ File Transfer Edition 客户端代理。尽管 WebSphere MQ File Transfer Edition 现 在不提供一个 Windows 服务了,但要使代理作为后台任务运行并不困难。真正的 麻烦是如何使它们具有弹性。fteStartAgent 命令生成一个子进程然后终止。这 意味着,如果配置为一个 Windows 服务,它要么不能重新启动,要么在每个间隔 都尝试重新启动。我们可以绕过 fteStartAgent 代理调用底层类来直接启动这个 代理,但必须小心翼翼,以免使用已建档的(documented)命令。
我们决 定使用的解决方案是本文的主题。它包含两部分:作为 SupportPac MA7K 提供的 Windows Service Trigger Monitor 程序,和少量以 Perl 编写的 “粘合 剂” 代码。它不仅按照理想的方式启动 WebSphere MQ File Transfer Edition 代理,实际上它还使这个代理非常难以终止。
核心组件是 SupportPac MA7K,它依赖 WebSphere MQ Client。WebSphere MQ Client 作为 SupportPac MQC7 可用。MA7K 服务连接到一个队列管理器并监听所 谓的发起队列(initiation queue)。队列管理器被配置为在这个队列上放置一 条消息,以响应在 WebSphere MQ File Transfer Edition 代理的命令队列 (command queue)中到达的一条消息。收到触发消息时,触发监控器解析将执行 的命令以及任何参数的消息。这些内容被组装到一个正在运行的命令行中,然后 控制在其发起队列上恢复监控的触发监控器的返回结果。
Perl 代码是必要的,因为触发监控器假设将要被启动的程序已被编写来将进 行触发,并将整个 TMC2 触发消息作为一个参数传递。当然,fteStartAgent 程 序是为人类、而不是触发监控器编写的,没有一个 TMC2 结构看起来怎样的概念 。因此,如果直接由触发监控器启动,它将不能运行。一个小型 Perl 程序充当 fteStartAgent 和触发监控器之间的一个 “垫片”,使用 TMC2 参数并将其转换 为 fteStartAgent 本机参数值。Perl 因其字符串处理功能而被选中,且它被安 装在所有版本的 Windows 服务器上,且随时可用。它也可以被编译为一个本机 Windows 可执行文件,这种文件无需安装 Perl 即可运行。
最后的步骤是配置队列管理器以进行触发。这包括定义一个进程对象和在代理 命令队列上启用触发。进程定义包括将用于启动代理的完全限定命令,以及将被 启动的代理的名称。
当我们在这个项目上安装第一个代理触发监控器后,我们发现了其他一些好处 。单个触发监控器能够处理同一个 Windows 服务器上的任意数量的代理。使用触 发监控器还意味着 WebSphere MQ 管理员可以从队列管理器启动或停止远程客户 端代理,而无需登录运行代理的 Windows 服务器。我的客户遇到的一个问题是 WebSphere MQ 管理员不能直接访问 Windows 服务器,在这种情况下,远程启动 和停止代理的能力尤其有用。
下面的步骤将帮助您设置您自己的 Windows 客户端触发监控器,以启动 WebSphere MQ File Transfer Edition 代理。这些说明假定 WebSphere MQ File Transfer Edition 客户端代理已安装到 C:\IBM\WMQFTE 且配置目录是 C:\IBM\WMQFTE\config。我发现,如果使用没有嵌入空格的短路径名,那么在 Windows 上管理 WebSphere MQ File Transfer Edition 将容易得多。运行触发 监控器的帐户的路径中应该有 C:\IBM\WMQFTE\bin 和 Perl 运行时。在开始安装 本文介绍的工具之前,最好配置 WebSphere MQ File Transfer Edition 代理并 确保其正确运行。
设置并测试一个 Windows 客户端触发监控器
安装 fteTriggerAgent.pl
下载 fteTriggerAgent.pl 文件并将其放置到 WebSphere MQ File Transfer Edition 代理将运行的服务器上的 C:\IBM\WMQFTE\bin 目录中。
这个脚本假定 WebSphere MQ File Transfer Edition 安装在 C:\IBM\WMQFTE\ 中,并试图将日志文件写入 C:\IBM\WMQFTE\Logs。如果上述路 径不存在,脚本将尝试创建它。如果您希望来自 fteTriggerAgent.pl 脚本的日 志文件被写入到一个不同的目录,则需要更改位于脚本顶部附近的 $LogPath 变 量。
这个脚本文件应该与 C:\IBM\WMQFTE\bin 中的其余文件拥有相同的所有权和 权限。要运行此脚本,.pl 扩展名应该与 Perl 可执行文件关联。(如果您想将 这个脚本编译为一个可执行文件,请查看来自 Active State 的 Perl Pro Studio。)