C# 使用Quartz.NET监视Mysql表并执行一些东西

C# 使用Quartz.NET监视Mysql表并执行一些东西,c#,mysql,quartz.net,C#,Mysql,Quartz.net,使用Quartz.NET是否可以完成以下操作: 我有一个名为“VODContent”的mysql表,其中有一个字段“StreamAt”-datetime-是否可以监视此表以及在“StreamAt”datetime值之前或之后5分钟,是否执行了某些进程(代码) 如有需要,我可以提供更多细节 提前感谢当然,这是可能的: 创建一个Quartz.Net作业来轮询VODContent(有,但这是一个简单的解决方案,适用于mysql,因为据我所知,mysqlconnector没有事件通知功能)。为了创建这样

使用Quartz.NET是否可以完成以下操作:

我有一个名为“VODContent”的mysql表,其中有一个字段“StreamAt”-datetime-是否可以监视此表以及在“StreamAt”datetime值之前或之后5分钟,是否执行了某些进程(代码)

如有需要,我可以提供更多细节

提前感谢

当然,这是可能的: 创建一个Quartz.Net作业来轮询VODContent(有,但这是一个简单的解决方案,适用于mysql,因为据我所知,mysqlconnector没有事件通知功能)。为了创建这样一个作业,您必须实现Quartz.Net as的,并且您的程序必须安排它每n秒/分钟运行一次,这在教程中也有描述

一个简短的教程,演示如何通过can连接、读取和写入mysql数据库

如何确定您是否已经开始了特定内容的工作取决于。例如,您可以修改特定行并引入一个新的bool值“Processed”,该值在安排特定作业时更新。然后,您必须只查询那些尚未处理的值

请阅读Quartz.Net中有关状态作业与无状态作业的部分,并确保理解它们之间的区别


然后,上面创建的作业将检查表中的更改,并计划一个新作业,该作业将按照教程中所述的说明,按照您的规则运行所需的流程/代码。

我的感觉是,按照您的要求执行操作,您并没有充分发挥Quartz的潜力

实现您想要做的事情的一个更简单的方法是,每次在VODContent中创建一个条目时,您还可以创建一个触发器,时间安排为+5分钟。这应该在您的应用程序代码级别上完成,即在VODContent中添加条目的过程中

您创建的触发器必须具有名称和组(以便您可以在以后检索它)。在您的情况下,我相信名称可能是您的VOD内容行的Id。以下是创建此类触发器的方法:

var simpleTrigger = new SimpleTrigger("yourVODContentId", "VODContentStreamAt", startTime);
然后,如果您想在某个时候取消触发器的执行(例如,您删除了VODContent中的一个条目,因为您的用户取消了订单),您可以调用计划程序上的UnscheduleJob来删除触发器:

_scheduler.UnscheduleJob("yourVODContentId", "VODContentStreamAt");
最后一件重要的事情是,您的Quartz.NET实例应该配置为AdoJobStore,而不是RAMJobStore。这样,触发器将存储在数据库中,即使调度程序停止/重新启动,也不会丢失已调度的触发器


基本上,您应该尝试将自己置于一个位置,即您将推送到Quartz,而不是让Quartz从应用程序中拉出。

非常感谢tobsen,我将首先查看文档,然后开始实现liitle位代码。完成后,我会回来Hi Tobsen,我做了一些示例,这没关系,但缺少的部分是,我不想编写代码来检查表中的任何元素是否准备好进行处理(用c#),我希望Quarts以某种方式为我做这件事,我希望你不理解meI编辑了答案,并添加了指向mysql教程和连接器的链接。试一试,然后贴出代码,如果你被卡住了,代码就不起作用了。嗨,朋友,我被禁止发布问题,你能帮我怎么知道这个问题吗