我们可以删除来​​自 SYSTEM.CHLAUTH.DATA.QUEUE 的消息吗

Can we delete the messages from SYSTEM.CHLAUTH.DATA.QUEUE

您能否解释一下为什么队列中会有待处理的消息 SYSTEM.CHLAUTH.DATA.QUEUE。现在队列中有 3 条消息。 如果删除这些消息怎么办。如果我们删除这些消息会不会有任何问题。 那些信息消息是关于通道认证记录的吗? 请提出解决方案。

IBM MQ v7.5 知识中心页面“Troubleshooting channel authentication records 讨论了 SYSTEM.CHLAUTH.DATA.QUEUE 的用途。

Behaviour of SET CHLAUTH command over queue manager restart

If the SYSTEM.CHLAUTH.DATA.QUEUE, has been deleted or altered in a way that it is no longer accessible i.e. PUT(DISABLED), the SET CHLAUTH command will only be partially successful. In this instance, SET CHLAUTH will update the in-memory cache, but will fail when hardening.

This means that although the rule put in place by the SET CHLAUTH command may be operable initially, the effect of the command will not persist over a queue manager restart. The user should investigate, ensuring the queue is accessible and then reissue the command (using ACTION(REPLACE) ) before cycling the queue manager.

If the SYSTEM.CHLAUTH.DATA.QUEUE remains inaccessible at queue manager startup, the cache of saved rules cannot be loaded and all channels will be blocked until the queue and rules become accessible.


总而言之,每次添加、更改或删除 CHLAUTH 规则时,队列管理器更新都会做两件事:

  1. 它更新内存缓存(运行 配置)
  2. 它通过添加、更新或删除 SYSTEM.CHLAUTH.DATA.QUEUE 中的消息来强化配置。这样 运行 配置在队列管理器重新启动时可用。

当队列管理器重新启动时,它从 SYSTEM.CHLAUTH.DATA.QUEUE 中读取消息以使用先前存在的规则初始填充内存中缓存(运行 配置)。

如果您要从此队列中删除消息并重新启动队列管理器,您会发现没有 CHLAUTH 条记录集。


存在一个名为 SYSTEM.AUTH.DATA.QUEUE 的类似队列,它保存队列管理器的 OAM(授权)规则。 CHLAUTH 队列与此队列之间的一个区别是 AUTH 队列由内部 MQ 进程打开 MQOO_INPUT_EXCLUSIVE,这意味着您根本无法打开队列。


请注意,CHLAUTH 是在 MQ v7.1 中添加的。如果在 7.1 或更高版本下创建新的队列管理器,默认情况下将启用 CHLAUTH。如果队列管理器从 7.1 之前的版本升级到 MQ v7.1 或更高版本,则默认情况下 CHLAUTH 将被禁用。无论它是新的还是升级的队列管理器,或者 CHLAUTH 是启用还是禁用,都会有三个默认规则(如下所列)。

  1. BLOCKUSER 规则拒绝所有 SRVCONN 通道上的任何 MQADMIN 用户。
  2. ADDRESSMAP 规则拒绝使用任何 IP 地址以 SYSTEM.* 开头的频道。
  3. ADDRESSMAP 规则允许从任何 IP 地址连接到 SYSTEM.ADMIN.SVRCONN。规则 #1 的限制仍然适用。

这三个默认规则可能与您在队列中观察到的三个消息直接相关。一般来说,使用默认规则启用 CHLAUTH 是一件好事。我通常会去掉#3,因为我没有这个名字的频道。您注意到 CHLAUTH 已禁用,如果您无意使用此功能,您可以使用 saveqmgrdmpmqcfg 转储 MQSC 命令以重新创建这三个默认规则,然后删除这三个规则,这将删除SYSTEM.CHLAUTH.DATA.QUEUE 上的三个消息。

如果以后您恢复正常并重新打开 CHLAUTH,您可以使用创建的备份恢复您删除的规则。