问题标签 [quartz.net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - 在使用 NHibernate Burrow 的 Asp.Net MVC 环境中使用 Quartz
我有一个运行 Burrow 的网站,我也想将它用于 Quartz 工作。
问题是我希望他们不共享任何状态。Quartz 作业在每个自己的线程中运行,而 Mvc 框架在每个请求结束时关闭工作区。理想情况下,mvc 应该有它自己的会话,并且每个作业都应该有它自己的会话。
我在这里有什么可能性?
PS:顺便说一句,我对 Quartz、Burrow 和 MVC 很陌生,所以我可能缺少一些非常重要的知识:|
logging - 使用 Quartz.net 进行日志记录
我会无耻地声明我对 Log4Net 的经验很少。我只是安装了它,但它不会从 Quartz.net 捕获日志事件,这是一个调度库。显然 Quartz.net 使用 Commons Logging 并且需要配置为指向我的 Log4Net 设置。不幸的是,它似乎不起作用。帮助表示赞赏:
.net - StructureMap 从线程本地范围返回已处理的 nHibenrate 会话对象
[OR] 如何为 UoW 定义一个 StructureMap 生命周期以供 http 请求和石英作业使用
我有这个使用 SM 进行 IoC 的 Web 应用程序。我正在使用 HybridHttpOrThreadLocalScoped 范围来存储我的 nHibernate ISession 对象。对于我的 Web 请求,这在每个请求的会话中都可以正常工作。
但我也有安排几个工作的quartz.net。该作业使用相同的工作单元来获取 ISession 对象。在这种情况下,当调度程序启动作业时,起初一切正常,并且作业运行良好几次,直到作业线程 ID 重复。
想象一下,当作业被调度时,它开始在 id 为 11、12、13 的线程中运行,然后再次使用线程 id 11。此时结构映射返回一个已被释放的会话对象,我得到“System.ObjectDisposedException:会话已关闭!” 错误。
因此,从我所见,会话保存在线程本地存储中,并且在我的工作单元结束时处理会话之后,会话对象仍保存在线程本地存储中。似乎在线程终止后它的本地存储没有被清除,并且当一个具有相同 id 的新线程被创建时,结构映射在旧线程本地存储中查找会话(我相信应该为新线程清除) 并返回已经释放的会话对象。
问题:
- 有没有办法清除线程本地存储(终止时)?
- 对于线程范围的对象,是否有等效的“ReleaseAndDisposeAllHttpScopedObjects”?
- 有没有办法使已处置的对象无效(或弹出),所以即使 SM 查找它,它也找不到任何对象并且必须创建一个新实例?
我希望我把我的问题说清楚了。这花了我几个小时的时间,但我仍然没有找到解决方法。我很感激任何提示:>
更新: 我添加了自己的解决方案,使 StructureMap 提供的 UoW 可以同时处理 http 请求和石英作业。如果您有更好/更简单/更简单的解决方案,请告诉我。
.net - 为什么 Quartz.NET 创建具有相同线程 ID 的线程?
我已经设置 Quartz.NET 来运行预定的作业。当我查看线程 ID 时,这真是太神奇了。它们只是在 10 线程间隔内重复。
我的意思是,例如,如果第一个执行我的作业的线程的 ID 为 101,那么第十一个线程(在第十一个间隔运行相同的作业)具有相同的 ID,101!
看起来 Quartz.NET 使用的是 10 个线程的池,但更神奇的是:为什么线程的 ID 相同?他们不应该在每次创建时都获得新的线程 ID 吗?
quartz-scheduler - 如何使多个实例不同时执行同一个作业
我有 4 个 Quartz Server 实例。所有实例都指向一个 ADO JobStore。我要做的就是让每个 Quartz 实例同时执行相同的作业。
我希望它足够清楚。
quartz.net - 从 ASP.Net 应用程序检索 Quartz.net 作业信息
我们有一个作为 Windows 服务运行的 Quartz.Net 安装。运行良好。我们还有一个 ASP.Net 应用程序,可以添加/编辑作业和监控作业。我们偶尔会在 ASP.Net 应用程序中遇到错误。错误是“调度程序已关闭”。或“名称为 'JOB_SCHEDULER_NAME' 的调度程序已存在。”
如果刷新页面,它可以正常工作。我已经能够通过一遍又一遍地快速打开同一页面的多个实例来重现问题。所以,我目前的理论是我们获取调度程序实例的方式不是线程安全的。
例如,以下是我们如何获取工作信息的简化版本:
这是在 ASP.Net 应用程序中加载页面时完成的。
ASP.Net 的配置设置是:
Windows 服务正在初始化调度程序,如下所示:
Windows 服务配置为:
有没有更好的方法来“查询”调度程序?
编辑:添加了更多配置信息
.net - Quartz.NET,“与远程调度程序通信时出错。”
我无法让 Quartz.NET 的客户端/服务器实现正常工作。
我在 ServerA 上有一个 SQL Server,一个运行 Quartz 作为服务的服务器 (ServerB) 和一个托管 ASP.NET 应用程序的服务器 (ServerC)。
我已经遵循了所有教程并深入研究了代码,但我看不出我做错了什么。服务器肯定在监听,我可以看到从 ServerC 开放的端口。不涉及防火墙。
运行下载包 (Quartz.Server.Service) 中包含的服务的 ServerB 具有以下配置文件设置:
ASP.NET 应用程序具有以下配置:
我已经尝试了很多东西。有时我会收到一个错误,即调度程序已经存在,而不是问题标题中的那个。
我在其他地方读到,由于线程问题,我应该在单例中创建调度程序,我已经这样做了:
我错过了什么?TIA
如果我在 web 服务器上打开一个 telnet 框并连接到石英服务器,那么服务肯定会响应。如果我输入几个字符,我会收到来自 Quartz 的错误。
这有帮助吗?即这不是连接问题?
c# - asp.net中调度任务的方式(不写windows scheduler)
我进入共享主机,他们不允许我使用 Windows 调度程序......那么在 asp.net 中实现预定任务的方法是什么(定时邮件)......我刚刚看到Jeff Atwood 博客的后台进程...... . 可靠吗?或任何其他执行计划任务的方式...
然后我找到了quartz.net,但我找不到将quartz.net 嵌入asp.net 的简单示例(没有安装Quartz.Net 服务器作为独立的Windows 服务)......关于quartz.net 的任何建议...... .
c# - 在 asp.net 网站中设置 Quartz.net
我刚刚将quartz.net dll 添加到我的bin 并开始了我的示例。如何根据时间使用quartz.net 调用C# 方法?
在这里,我只是在页面加载时发送邮件。如何SendMail()
使用quartz.net 在一天中的给定时间(比如早上6 点)打一次电话?我不知道如何开始。我应该在我的global.asax
文件中配置它吗?有什么建议吗?
c# - 在 Quartz.net 中处理 JobExecutionException
可能是一个愚蠢的问题......但无论如何......
我已经设置了quartz,可以安排作业,并且可以确认作业(实现IJob 接口)正在运行。
查看网站上的文档,(本教程的第 3 课):
允许从 execute 方法抛出的唯一异常类型是
JobExecutionException
.
我希望当我没有明确处理的异常发生时,它应该抛出一个 JobExecutionException,以便我可以将它记录到“父”应用程序中。我已经将我的代码包装在一个 try catch 中,并抛出了 JobExecutionException,但现在在哪里处理呢?
我不会在任何地方调用 execute 方法,它由 Quartz 处理(在单独的线程上)。那么,当它发生时我该如何处理该错误。我真的不想吞下作业中的错误