现在的位置: 首页 > 综合 > 正文

Windows消息队列:消息队列管理问题的疑难解答

2018年05月04日 ⁄ 综合 ⁄ 共 5559字 ⁄ 字号 评论关闭

http://www.feiesoft.com/windows/msmqconcepts/sag_msmqtshoot_2.htm

Windows专题-Windows消息队列:消息队列管理问题的疑难解答·内容正文

该主题为解决有关查看或设置属性、访问 Active Directory中对象以及使用消息队列管理单元等问题提供指导。

您有什么问题?飞娥软件能帮到你。

找不到消息队列的管理工具或菜单快捷方式

原因:消息队列是使用 MMC 控制台中的“计算机管理”、“Active Directory 用户和计算机”以及“Active Directory 站点和服务”管理单元的扩展来管理的。

解决方案:根据需要打开“计算机管理器”、“Active Directory 用户和计算机”或“Active Directory 站点和服务”管理单元。

如果希望管理从属客户端,必须访问支持服务器。

解决方案:Windows XP Professional 上,只有“计算机管理”管理单元是默认安装的。Windows XP Professional中不包含“Active Directory 站点和服务”管理单元和“Active Directory 用户和计算机”管理单元,并且不能通过安装Windows 2000 管理工具将其安装在Windows XP
Professional
 计算机上。若要管理基于域的消息队列网络或访问和显示 Active Directory中的信息,则必须使用这些管理单元。您可以通过打开Windows XP Professional 计算机上的远程桌面连接启动这些组件,以访问Windows 2000 域控制器或安装有该管理单元的成员服务器上的“终端服务”。这样,您就可以执行基于域的管理任务,并通过运行Windows XP Professional 的消息队列计算机访问
Active Directory。

请参阅消息队列管理概述;远程管理服务器

在计算机管理中的“服务和应用程序”之下找不到“消息队列”

原因:消息队列服务未运行。

解决方案:在“计算机管理”控制台树中的“服务和应用程序”之下,单击“服务”。在细节窗格中的“名称”之下,用鼠标右键单击“Message Queuing”,再单击“启动”。然后重新启动“计算机管理”。

在 Active Directory中找不到消息队列对象

原因:没有为这些管理单元选择必要的查看选项。

解决方案:在“Active Directory 用户和计算机”中,单击“查看”菜单中的“用户、组和计算机作为容器”,再单击“高级功能”。消息队列对象通常位于计算机容器或域控制器容器之下。

当消息队列运行于脱机模式中时,您应当能够看见公用队列,但看不到消息、队列属性、专用队列、系统队列和触发器。

解决方案:在“Active Directory 站点和服务”中,单击“查看”菜单中的“显示服务节点”。消息队列对象在服务器对象和服务对象之下。

可以通过为这些管理单元创建自己的 .msc 文件以保存这些更改,以便在默认情况下总是启用这些视图。这种情况下,在您首次打开您以前创建的 .msc 文件时,在“文件”菜单上单击“选项”然后在“控制台模式”中选择三种用户模式之一。随后,控制台将以一种用户模式及正确启用的视图打开。从管理的角度看,使用任何用户模式打开控制台都比作者模式更安全,因为没有其他人能够更改控制台的行为和外观。

请参阅“Active Directory 用户和计算机”管理单元“Active
Directory 站点和服务”管理单元
Active Directory中的消息队列对象

不允许访问 Active Directory中任何消息队列对象

原因:可能将消息队列服务运行在特定用户帐户下。若要为 Windows XP 以前版本的客户端提供对 Active Directory中对象的访问,此服务必须运行于Windows 2000 域控制器上的 LocalSystem 帐户。

解决方案:验证消息队列服务在相应消息队列服务器的 LocalSystem 帐户下运行。

无法建立与 Active Directory 的连接

原因:要与之通讯的消息队列服务器可能脱机,或者消息队列服务停止运行。

解决方案:验证要与其进行通信的消息队列服务器确实处于联机,并且正在运行消息队列服务。

原因:计算机可能处于脱机状态、网卡可能发生故障、计算机没有分配到 IP 地址(或者 IP 地址是 0.0.0.0)。

解决方案:验证计算机是否联机、网卡是否正常工作、是否正确配置了 TCP/IP。

原因:DNS 服务器已脱机或者未进行正确配置,或者消息队列服务器的 IP 地址已经改变但还没有复制到 DNS 服务器中。

解决方案:验证 DNS 服务器联机并已正确配置。

原因:您所在的站点不包含在配置为全局编录服务器的 Windows 2000 域控制器上运行的消息队列服务器,或者服务器证书已经到期或不存在。这将影响运行 Windows NT 4.0 的 MSMQ 1.0 用户以及在本地用户帐户下运行的所有用户。

解决方案:验证要与之通讯的消息队列服务器是否已正确配置并具有有效的服务器证书。

原因:可能没有足够的权限访问 Active Directory。

解决方案:授予自己合适的权限以执行该操作。

所做的更改不能在 Active Directory中显示

原因:复制会延迟在管理单元中显示的信息更新,因此只有在进行复制之后才会显示使用管理单元所做的更改。

解决方案:更改之后按 F5 或者等待至少 15 分钟。

请参阅Windows 2000 Server 帮助中的“复制”和“配置复制”。

Windows NT 4.0 客户端和本地用户不能访问 Active Directory

原因:在目录林中的Windows 2000 域控制器上安装消息队列服务器期间未选择降低安全性。为了更有效地支持运行Windows NT 4.0 的 MSMQ 1.0 客户端以及在本地用户帐户下运行的用户,必须降低 Active Directory 的安全性。(从属客户端不能在本地用户帐户下运行,而且任何将有关消息队列对象的查询直接而不是通过消息队列服务器发送到域控制器上的 Active Directory
的计算机,在使用本地用户帐户登录时,即使 Active Directory 的安全性被降低,也无法访问 Active Directory。)

解决方案:使用 Windows XP 资源工具包提供的 ADSI 编辑器降低安全性。

请参阅降低安全性因素

不允许访问特定队列的内容

原因:可能没有查看队列的正确权限。消息队列显示所有默认可查看的队列。然而,您只能查看那些有打开权限的队列的内容。因此,在管理单元中可能不能查看某些公用队列的内容。

解决方案:授予自己对该队列的“查看消息”和“读取”权限。要查看队列日志的内容,您必须有该队列的“查看日志”权限。

请参阅查看队列

不允许创建队列

原因:可能没有足够的权限执行该操作。

解决方案:授予自己合适的权限以执行该操作。

请参阅设置 Msmq 对象的权限

无法向其他站点发送消息

原因:可能没有在两个站点之间定义路由链接,也可能指定的站点入口无法使用。因此,虽然应用程序可以发送消息,但是消息不能离开传出队列。

解决方案:在两个站点之间创建路由链接,并为该路由链接定义站点入口。为实现冗余,建议在所有站点之间创建多个路由链接。

请参阅配置路由链接

无法发送或接收已验证的消息

原因:计算机的用户证书可能已经删除、过期或没在 Active Directory中注册。发送已验证消息需要用户证书。用户证书会在安装消息队列的同时进行安装,并且在第一次登录时在 Active Directory中注册。

解决方案:使用“消息队列属性”对话框(可以从“计算机管理”打开)更新证书然后将其注册。

原因:消息队列应用程序不能使用 Windows XP 提供的 Microsoft 基本加密服务提供程序 (CSP)。发送或接收已验证消息的所有消息队列应用程序都需要 Microsoft 基本 CSP。

解决方案:验证在发送或接收消息时消息队列应用程序使用 Microsoft 基本(或增强)CSP。

请参阅用户证书消息队列的身份验证

所有发送至某个队列的消息都被拒绝

原因:队列可能限制访问。

解决方案:确保该队列和发送消息的计算机位于相同的域中或在同一个可信任域中。

请参阅设置队列对象的权限

不能从队列中检索消息

原因:要从队列检索消息,您必须有该队列的“接收消息”权限。具有该队列的“读取”权限是不够的。

解决方案:授予自己该队列的“接收消息”权限。

请参阅读取消息

再也不能将消息发送至特定的计算机或队列中

原因:特定计算机可能已超出计算机配额或队列配额。

可以用以下两种方式验证它:

  1. 通过请求否定确认消息和检查它们的类(此技术适用于队列配额,不适用于计算机配额)。
  2. 通过使用性能计数器将队列或计算机配额同实际消息量相对比。

解决方案:从可应用的队列中删除消息或处理消息,或者增加适当的配额值。

请参阅设置计算机的消息配额设置消息的队列配额

快递消息丢失

原因:每当消息队列服务在计算机(未传送快递消息驻留在该计算机的不稳定内存中)上停止时,或者计算机关闭或出现故障时,未传递快递消息将会丢失。

解决方案:使用可恢复或事务性消息(请注意只有事务性消息可以保证不丢失数据。)。

请参阅备份和还原消息

对于从属客户端事务性消息传递不起作用

原因:运行 Windows NT 4.0 的 MSMQ 1.0 从属客户端(其支持服务器正在运行 Windows 2000 )可能没有安装Windows NT Service Pack 4 (SP4)。事务性消息需要 SP4 或更高的版本。

解决方案:在相应的从属客户端上安装 Windows NT SP4 或更高版本。

原因:可能没有运行Microsoft Distributed Transaction Coordinator (DTC)。外部事务处理需要 DTC。

解决方案:启动 DTC。

无法将测试消息发送至特定队列

原因:测试消息只能从MMC 管理单元发送到测试队列,测试队列的队列类型 ID 为 {55EE8F33-CCE9-11CF-B108-0020AFD61CE9}。

解决方案:验证测试消息要发送到的队列是否有正确的队列类型 ID。不要将事务性队列或需要身份验证的队列改为测试队列,因为发送的任何测试消息都不会传递到这样的队列。注意,可以通过编程将测试消息发送到具有任何队列类型 ID 的队列。

请参阅向队列发送测试消息

无法访问磁盘上本地存储的消息文件

原因:默认情况下,只有本地计算机的 Administrators 组成员才可以完全访问所有本地存储的消息文件、日志文件和 LQS(本地队列存储)文件。

解决方案:授予自己该计算机的管理权限,或将自己添加到本地 Administrators 组。

请参阅设置消息传递文件的权限

找不到特定操作的审核消息

原因:审核消息存储在执行此操作的消息队列服务器上的安全日志中,此服务器可能不是拥有该对象的服务器。此外,只在打开队列时在安全日志中创建审核消息,在每次接收或发送消息时并不创建。

解决方案:使用事件查看器查看相应计算机中安全日志的信息。

请参阅消息队列的访问审核

与 IPX 计算机的通讯有问题

原因:消息队列服务不再支持 IPX 协议。

解决方案:将 IP 协议添加到仅使用 IPX 协议的任何计算机上。

MSMQ 1.0 客户端不能验证消息队列服务器

原因:当在混合模式环境中操作时,MSMQ 1.0 客户端使用服务器证书验证消息队列服务器。相应服务器的服务器证书可能丢失或没有在 Active Directory中注册。

解决方案:为响应 MSMQ 1.0 客户端查询的每个消息队列服务器创建和注册服务器证书。

请参阅服务器身份验证

从属客户端无法运行消息队列应用程序

原因:可能使用本地用户帐户或其他未经验证的帐户登录。消息队列应用程序无法在未经验证的帐户下运行。

解决方案:使用已验证的域用户帐户登录。

运行从远程队列检索消息的多个应用程序时显示资源不足的错误

原因:每个消息队列应用程序从远程队列检索消息时,都将在本地计算机上建立一个线程(正在运行应用程序的计算机)。在消息队列服务器上默认最多可以创建 64 个线程,而在为此目的创建的独立客户端上默认最多可以创建 16 个线程。

解决方案:根据需要使用注册表编辑器增加MaxRRThreads 项目的设置。只有使用注册表编辑器第一次添加这个项目或者在以后更改此项后,该项目才会出现在注册表中。若要增加此项设置,请执行以下操作:

  1. 要打开注册表编辑器,请单击“开始”,再单击“运行”,然后键入“regedit32.exe”。
  2. 单击注册表子项Parameters

    位置

    • HKEY_LOCAL_MACHINE
    • SOFTWARE
    • Microsoft
    • MSMQ
    • Parameters
  • 单击“编辑”,然后单击“添加值”。
  • 在“添加值”对话框的“值名称”中,输入MaxRRThreads,在“数据类型”中单击打开列表箭头,选择REG_DWORD,然后单击“确定”。
  • 在“DWORD 编辑器”对话框的“数据”中,输入新值(十进制),在“基数”下单击“十进制”,然后单击“确定”。

    警告

    • 编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。

    提示:

    • 这些线程将按要求创建,并且只要消息队列服务在本地计算机上运行,它们就会存在。
  • 消息队列资源在服务器群集上已经超时

    原因:群集资源对于恢复联机的默认超时设置是三分钟。消息队列使用的时间可能超出三分钟,这是由恢复方案和存储消息的数决定的。

    解决方案:为消息队列资源增加默认超时设置。

    请参阅Windows 2000 Server 帮助中的“群集资源”。

    Microsoft Windows专题

    抱歉!评论已关闭.