![]() |
1
1
出现的错误是,您没有正确设置第二个代理的属性,无法将其与RunOnServer一起使用。但RunOnServer无法解决您的问题。您的第一个代理将等待第二个代理。 不过,我的方法是让第一个代理在某个数据库中创建并保存文档。我将其称为“触发文档”(因为这正是我在20年前设计一个使用此技巧的系统时所称的)。 您可以将触发器文档写入任何数据库。它不必是应用程序的主数据库。如果您想这样设置它,可以这样做,但我假设它是一个单独的数据库,因为这样可能更容易。我叫它AgentQueue db。 您将第二个代理放入AgentQueue数据库,并将其设置为运行 When documents are create or modified . 您写入AgentQueue的触发文档需要包含第二个代理将需要的信息,以便向您的第三方过程提供信息,即HTTP帖子中提交的数据字段、主应用程序中需要的文档的UNID等。Y 您的第一个代理保存触发器文档并退出-向浏览器发送200。第二个代理将很快运行—不一定立即运行,因为它将受到代理管理器中的限制。因为您的第二个代理一次只能运行一个副本,所以最好的编写方法是让它在其数据库中查找多个未处理的触发器文档并将其全部处理,而不是只处理一个文档并终止。一旦处理完触发文档,它要么将其标记为“完成”并保存,要么将其删除。保存它可能很有用,因为如果需要,您的第二个代理可以将进度和调试信息写入该文档。 |