如果选择单独创建队列管理器,则必须设置死信队列(DLQ)。处理 消息流 中的消息时若发生错误,则由 WebSphere Message Broker 引用 DLQ。
如果无法处理用户定义的消息流或发布/预订模型中的消息,则使用最后一个办法,将消息路由到此 DLQ。 如果更希望将此消息回退到输入队列,并且在问题解决之前有效地阻止消息流,则禁用 DLQ。
除非删除了队列管理器,否则 mqsideletebroker 命令不删除此队列。
如果使用的 WebSphere MQ 队列管理器不是用 mqsicreatebroker 命令创建的,并且做了相应的选择,就可以定义群集。在大多数情况下,这样可以简化配置工作。
如果队列管理器是用此命令创建的,它就不作为 Windows 服务启动;因此,如果您注销,它就会停止。要避免发生这种情况,必须保持登录状态,或者更改队列管理器服务的启动状态。(如果锁定工作站,WebSphere MQ 队列管理器并不停止。)
如果在 z/OS 上创建大写的代理名,在工作台中也必须为代理使用此大写名称。
有关可用字符集的限制,请参阅命令中允许使用的字符。您可以用任何有效的用户名语法指定它。在 Windows 平台上,有效的语法有:
在 Linux 和 UNIX 系统上,仅最后一种格式 username 有效。
如果在 Windows 平台上使用该用户标识的非限定格式(username),操作系统就从本地系统开始,在它的整个域中搜索该用户标识。这种搜索可能要花费一些时间才能完成。
指定的 ServiceUserID 必须是本地组 mqbrkrs 的成员。在 Windows 平台上,它可以是该组的直接或间接成员。ServiceUserID 还必须有权访问主目录(安装了 WebSphere Message Broker 的目录)和工作目录(如果 -w 标志指定了此目录)。
如果在 Windows 平台上将代理指定为作为 WebSphere MQ 可信应用程序运行(标志为 -t),还必须将此用户标识添加到组 mqm。在 Linux 和 UNIX 系统上,如果设置了 -t 标志,则将 ServiceUserID 指定为 mqm。
Windows 平台的安全性需求中详细描述了 ServiceUserID 的安全要求。
如果使用此用户标识访问数据库(即,不使用 -u 标志指定其他用户标识),并为数据库使用 SQL Server,则必须创建此用户标识作为 SQL Server 的登录标识,并在创建代理前赋予它正确的访问权(有关进一步的详细信息,请参阅考虑代理的安全性)。如果代理数据库位于 DB2 中,而 DB2 无法识别此用户标识,DB2 将自动创建用户标识。
为与现有系统兼容,可以仍然指定 <password>。但在运行此命令时,如果未使用该参数指定密码,调用此命令时会提示您输入密码,并且还提示您再次输入密码以验证您的输入是否正确。
在 Linux 和 UNIX 系统上,为与 Windows 平台兼容需要使用 -a,但在涉及 ServiceUserID 时并不使用它;仅当未指定 -p 时才使用它作为缺省值。(有关进一步的详细信息,请参阅关于 -p 参数的注释。)
每个代理都必须有自身的独特队列管理器。多个代理之间不能共享队列管理器。
对于不存在的队列管理器,可以使用此命令创建。它不作为缺省队列管理器创建;如果希望它成为该系统上的缺省队列管理器,必须在发出该命令之前创建它,或者更改该队列管理器的设置,使其成为缺省队列管理器。根据您使用的 WebSphere MQ 版本,使用 WebSphere MQ 资源管理器或 WebSphere MQ 服务管理单元。
将队列管理器属性 MAXMSGLN(可以放入队列中的消息的最大长度)更新为 100 MB。无论队列管理器是不是使用此命令创建的,都必须执行此项更新。
有关可用字符集的限制,请参阅命令中允许使用的字符。
此数据库必须已经存在。如果还没有为此 DSN 创建一个系统 DSN ODBC 连接的话,必须先执行这一步。
如果在 Linux 上有 DB2 数据库,则输入相应的 DB 数据库别名;不需要 ODBC DSN。
此用户标识必须具有在数据库中创建表的权限,以及对那些表读写的权限。
在 Windows 平台上,如果在 DB2 中存在您的代理数据库,并且 DB2 不知道该用户标识,则在 DB2 中为您创建它。在 Linux 和 UNIX 系统上,服务用户必须以前就被授予正确的特权。 如果您的数据库是 SQL Server,则必须在创建代理之前,将该用户标识创建为 SQL Server 登录标识并且赋予正确的访问权(有关详细信息,请参阅Windows 平台的安全性需求)。
如果在 DB2 中有个应用程序数据库,它是使用此用户标识创建的,或者此用户标识对它有合适的读、写或创建权限,则在此代理中执行的消息流就能够访问和处理它所包含的应用程序数据,而不需要指定显式模式名。
此用户标识必须具有在数据库中创建表的权限,以及对那些表读写的权限。
如果在 DB2 中有个应用程序数据库,它是使用此用户标识创建的,或者此用户标识对它有合适的读、写或创建权限,则在此代理中执行的消息流就能够访问和处理它所包含的应用程序数据,而不需要指定显式模式名。
为与现有系统兼容,可以仍然指定 <password>。但在运行此命令时,如果未使用该参数指定密码,调用此命令时会提示您输入密码,并且还提示您再次输入密码以验证您的输入是否正确。
对于 Linux 和 UNIX 系统,可以将 -u 和 -p 指定为空字符串(用两个双引号"" 表示)。在这种情况下,DB2 把 ServiceUserID 的特权授予 WebSphere Message Broker,这会使数据库连接成为“已验证”。如果将 -a、 -u 和 -p 都指定为空字符串,WebSphere Message Broker 就不存储密码,创建最安全的配置。
该目录还用于在跟踪是活动时所创建的跟踪记录。这些写到子目录 log,您必须在启动代理前创建它们。
当进程异常终止时,代理写的出错日志将存储在该目录中。在 Windows 平台上,使 用该选项,在不是安装产品的驱动器上指定目录。
出错日志是无限制的并继续增长。请定期检查该目录并清除旧的错误信息。
您不能使用 mqsichangebroker 命令更改此选项。如果您要指定或更改工作路径,请删除并重新创建代理。
如果您在 Windows 平台上指定此选项,则将 ServiceUserID(由标志 -i 标识)添加到组 mqm。如果在 HP-UX 和 Solaris 上指定此选项,则将 ServiceUserID 指定为 mqm。 有关使用 WebSphere MQ 可信应用程序的更多详细信息,请参阅 WebSphere MQ Intercommunication。
必须创建您自己的目录用于存储 .lil 或 .jar 文件。 请勿将它们保存在 WebSphere Message Broker 安装目录中。
如果您指定多个其他目录,则必须用平台特定的路径分隔符分隔它们(在 Windows 平台上用分号 ;,在 Linux 和 UNIX 系统上用冒号 :)。
不可以在该路径中包含环境变量:即使包含,也会忽略它们。
当消息流正在处理应用程序消息时,它无法响应配置更改。只要被请求更改其配置的执行组中有一条消息流未在此超时期间完成应用程序消息的处理以及配置更改的应用,执行组就会向部署的配置消息返回否定响应。
为该超时设置的值取决于系统负载(包括 CPU 利用率)和每个执行组的负载。您可以通过部署代理的整个配置进行初步估计。成功完成该任务的时间指示要设置的最小值的指示。
该值是以秒为单位指定的,其范围可以从 10 到 3600。缺省值是 300。
ConfigurationTimeout 和 ConfigurationDelayTimeout(在下面描述)之和表示在代理生成否定响应之前,允许代理处理部署的配置消息的最大时间长度。
这表示代理及其执行组处理最小部署配置消息的时间,它取决于队列管理器网络延迟、代理的队列管理器上的负载和系统负载。
mqsireporttrace brokerName -e "Execution Group Name" -u
F MQP1BRK,reporttrace u=yes,e='exgrp1'
各个执行组的响应时间因系统负载及其自身的处理负载不同而各异。设置的值必须反映任何执行组的最长响应时间。如果设置的值太低,代理返回否定响应并可能将错误消息发到本地错误日志。
该值是以秒为单位指定的,其范围可以从 10 到 3600。缺省值是 60。
如果代理在产品系统上,则增加 ConfigurationTimeout 和 ConfigurationDelayTimeout 的值以允许在应用配置更改之前完成消息流当前正在处理的应用程序消息。
如果代理在部署或测试系统上,则可能需要减少超时(特别是 ConfigurationTimeout)以增加感知响应时间,并对不显示期望行为的代理强制进行响应。但是,减少超时值会降低成功地部署配置更改的可能性。
当支持 Web service 的消息流启动时,代理将启动该侦听器,缺省值为 7080。
确保您指定的端口没有未用于任何其他用途。
时间间隔为 0 秒表明平台有一个外部通知方法,并且不使用 WebSphere Message Broker 中的内部计时器。
在 Windows 系统上,用来调用该命令的用户标识必须具有本地系统的管理员权限。
在 UNIX 系统上,用于调用此命令的用户标识必须是 mqbrkrs 组的成员。
在 z/OS 系统上,用来调用该命令的用户标识必须属于对组件目录拥有“读”和“写”访问权的组。
使用 LDAP:确保注册表受到适当保护以阻止未授权的访问。对于代理的正确操作,不需要在 mqsicreatebroker 上设置 LdapPrincipal 和 LdapCredentials 选项。 密码没有用明文存储在文件系统中。
授予 WebSphere Message Broker 组 mqbrkrs 对所有这些队列的访问权。如果启用了 DLQ,它也有同样的权限。
该命令返回下列响应:
(51002)[IBM][CLI Driver][DB2/NT]SQL0805N Package "NULLID.SQLLF000" was not found. SQLSTATE=51002.
此错误在与数据库的绑定不成功时出现。
在 Windows 平台上,代理数据库不需要绑定,但用户数据库需要。如果使用 DB2“控制中心”创建了数据库,则会为您完成绑定。如果使用命令接口,则不会。例如,对于数据库 MYDB,您可以通过在命令提示符下输入以下命令来创建或重新创建绑定:
db2 connect to MYDB user db2admin using db2admin db2 bind X:\sqllib\bnd\@db2cli.lst grant public db2 connect reset
其中 X: 是安装 DB2 的驱动器。
在 UNIX 平台上,所有数据库都需要绑定。例如,对于数据库 WBRKBKDB,您可以通过在命令提示符下输入以下命令, 使其生效(其中 <user_name> 是创建数据库实例时所用的用户标识):
db2 connect to WBRKBKDB user db2admin using db2admin
db2 bind ~<user_name>/sqllib/bnd/@db2cli.lst grant public CLIPKG 5
db2 connect reset
如果没有使用缺省 DB2 用户标识和密码(db2admin),必须使用相应的值替换 db2 connect 命令中的标识和密码。
如果由于第一次运行失败而再次运行 mqsicreatebroker 命令,则会收到一系列消息。它们表明了任何无法创建的项。不应该由此产生任何不良影响。例如,只要解决了第一次失败的原因后,尝试创建第一次失败的代理应该导致代理被正确创建。
mqsicreatebroker WBRK_BROKER -i wbrkuid -a wbrkpw -q WBRK_QM -s WBRK_UNS_QM -n WBRKBKDB
mqsicreatebroker WBRK_BROKER -i wbrkuid -a wbrkpw -q WBRK_QM -n WBRKBKDB -t
mqsicreatebroker WBRK_BROKER -i wbrkuid -a wbrkpw -q WBRK_QM -n WBRKBKDB -x /opt/3rdparty/wmbexits
mqsicreatebroker CSQ1BRK -q CSQ1 -u BRKUSER -n DBA0
mqsicreatebroker CSQ1BRK -q CSQ1 -u BRKUSER -n DBA0 -2