WebSphere Message Broker 中的Publish/subscribe通过工作台来进行管理,而工作台用于连接拓扑或层次结构中的代理以及管理基于主题的安全(如果使用用户名称服务器)。类似其他 工作台 更改,您需要部署任何您所做的更改,以便将更新发送到代理。
本主题包含一些建议,用于处理使用发布/预订时可能出现的某些常见问题:
+() 0 BIP8204I: User Name Server is registering a client with UUID 15db2a8e-869e-11d5-8000-091465ac0000, and cache version 0.
这对于订户应该总是可能的,但对于发布方,可能在不知道始发应用程序的情况下发布消息(例如,通过使用输入节点上的缺省主题属性,或通过使用 Compute 节点来修改消息流中的该属性)。 处理该消息的结果仍记录在用户跟踪中,这可能给出发生了什么的线索。
只有消息与主题、预订点以及过滤器匹配时,才向订户它们发送消息。因为预订点在消息流中指定,而不是在发布消息中指定,不正确的消息流设置可能引起意外的故障。
包含 Publication 节点的流的用户跟踪,会显示发布内容是否有任何匹配。
多个执行组或多个代理的情况更复杂。一旦消息经目标执行组处理后,就会将响应发送给订户。其他执行组(和代理)是异步更新的。结果是在接收到其他地方生成的发布之前可能有延迟。如果代理正忙,则在消息被完全处理之前可能会有延迟。在多代理设置中,如果通信已暂挂,预订更改则通过代理的网络传播。请检查通道。
对于多执行组或代理,如果负载非常高,可能会放满中间 WebSphere MQ 队列。这种情况可能会在 syslog(如果代理由于队列已满而无法放入其中),或在 WebSphere MQ 日志(如果通过通道进入的消息由于目标队列已满而无法放入其中)中报告。如果看到这种类型的消息,可以显示您的所有队列管理器上的队列深度,以查看是否有任何队列快要满了。
如果启动后,代理的任何一个日志中记录了 BIP8303 错误,则说明与用户名称服务器的通信出现了问题。请检查 WebSphere MQ 与用户名称服务器之间的双向通道,然后再试一次。应该会看到针对配置管理器和任何代理的事件消息 BIP8204I,显示它们已成功地向用户名称服务器注册。
如果您的发布/预订请求失败,并且系统报告事件消息 BIP7017,请检查客户机用户标识对于运行用户名称服务器的系统是否是已知的。而且,如果在 Windows 域环境中操作,确保创建用户名称服务器时将 mqsicreateusernameserver 命令中的 -d 参数设置为适当的域,并且所有客户机应用程序用户标识都是这个域的成员。
发布/预订中的消息持久性通常是受保护的。然而,如果 ACL 不允许持久性,订户可能不会获得预期的持久性。
例如,如果想要使用:
<Filter>Body.e_ALERT_BODY.eqnum<6</Filter>
指定:
<Filter>Body.e_ALERT_BODY.eqnum<6</Filter>
部署配置时,会接收到来自每个代理的响应;这些响应出现在工作台中。不过,也要检查一下每个代理的本地日志。对于每个连接,系统报告 BIP7113 消息。可以使用 Soccer 样本应用程序来测试通信。运行各个代理每一部分以测试它们的通信是可能的。
需要在配置管理器队列管理器和用户名称服务器队列管理器之间建立双向的发送方和接收方通道及传输队列。检查这些通道是否已创建并且正在运行。
如果对设置进行了任何更改,请重新启动配置管理器,并检查 Windows 上的事件消息 BIP8258,其中会表明配置管理器已成功地向用户名称服务器注册。如果您做了任何更改(例如,对通道做了更改),您也需要重新启动工作台以刷新显示的用户列表。
在 z/OS 上,如果用户名称服务器正在运行,并且正确地设置了以上选项,但在“代理管理”透视图的“任务”视图中,仍然没有看到列出 z/OS 用户,则检查是否所有的 z/OS 都定义了 OMVS 分段。如果尚未定义,用户名称服务器不会列出这些用户。
如果没有设置 LIBPATH,JIT 编译器将会正确装入和运行。这样的话更简单了,因此最好不设置 LIBPATH。可以通过将库链接到 /var/wmqi/lib (对于所有 WebSphere Message Broker for AIX 进程),或 /usr/lib(对于系统上的所有进程),使这些库可用。在 WebSphere Message Broker for AIX 中,是这样配置 DB2 库的。
如果必须设置 LIBPATH,则对其更新,以包含目录 /usr/java130/bin。
LIBPATH=/usr/local/lib:/usr/java130/bin mqsistart mybroker
#DFL0 DSNILMCL RESOURCE UNAVAILABLE 558 CORRELATION-ID=ST03BRK CONNECTION-ID=RRSAF LUW-ID=* REASON 00C90092 TYPE 00000905 NAME IRLM *DXR175E IFL0001 IRLM IS UNABLE TO OBTAIN STORAGE - ECSA DSNT501I #DFL0 DSNILMCL RESOURCE UNAVAILABLE 560 CORRELATION-ID=ST04BRK CONNECTION-ID=RRSAF LUW-ID=* REASON 00C90092 TYPE 00000905 NAME IRLM