【问题标题】:MSMQ Trigger EXE is not executingMSMQ 触发器 EXE 未执行
【发布时间】:2017-05-29 08:51:45
【问题描述】:

我们的 MSMQ 6.3.9600 在 Win Server 2012 R2 Standard 上。 安装了消息队列、消息队列触发器和目录服务集成。消息队列和消息队列触发器服务都在“网络服务”下运行。

我们创建了一个非事务性公共队列(比如称为测试)。在测试 > 属性 - 安全中,我给了 NETWORK SERVICE “完全控制”,包括接收消息、Peek 消息等。

测试队列有一个触发器: -1 规则称为 TestRule -队列路径名称:myServer\Test -启用:是 -序列化:否 -消息处理类型:消息偷看

测试规则: - 规则条件:消息标签不包含“@@@@@@@@@@@@@@@@@” - 规则操作:调用独立可执行文件 (EXE) C:\myFolder\myProgram.exe。 这个 VB.NET 程序是用 .NET Framework 4.0 编写的。 参数:调用参数:消息 ID(作为变体)

在 myProgram.exe 属性 > 安全性的 Windows 资源管理器中,我还为程序及其文件夹提供了 NETWORK SERVICE “完全控制”。

当我向测试队列发送消息(并且我在测试队列中看到这些消息)时,我在任务管理器中看到了 myProgram.exe,但它没有被执行。 Message标签肯定不包含“@@@@@@@@@@@@@@@@”,所以应该满足触发条件。 在 myProgram.exe Form_Load 中,我立即写入日志文件,但没有看到该日志文件已创建。我也尝试向事件查看器写入消息,但在事件查看器中看不到这些消息。

我可以手动运行 myProgram.exe(dbl 单击 exe 或从“运行”中运行),它运行良好。

我重新启动了消息队列服务(反过来也启动了消息队列触发器服务),但 myProgram.exe 仍然没有执行。

相同的设置适用于我们的另外 2 台服务器(myProgram.exe 在其他 2 台服务器上被触发和执行),它只是不能在这台服务器上运行。

我还有什么需要检查的吗? 谢谢。

【问题讨论】:

    标签: .net triggers message-queue msmq windows-server-2012


    【解决方案1】:

    如果您可以在任务管理器中看到 myProgram.exe,则说明触发器已工作并且应用程序已执行。问题很可能是您的应用程序没有权限做它想做的任何事情,因为您可以在登录用户的上下文中加载它时使其工作。

    【讨论】:

    • 你是正确的程序确实运行了,但是由于它无法写入EventViewer而立即出错(错误处理也尝试写入EventViewer但失败了,所以我看不到错误)。错误是“找不到源,但无法搜索部分或全部事件日志。要创建源,您需要读取所有事件日志的权限,以确保新源名称是唯一的。无法访问的日志:安全。”目前,消息队列触发器服务使用网络服务运行。我会将其更改为使用服务帐户(服务器的本地管理员)运行,看看是否可行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2015-12-23
    • 2012-08-16
    相关资源
    最近更新 更多