小编STW*_*STW的帖子

Quartz.Net工作并不总是在运行 - 找不到任何理由

我们使用Quartz.Net来安排大约200个重复工作.每个作业使用相同的IJob实现类,但它们可以具有不同的日程表.在实践中,他们最终有相同的时间表,因此我们有大约200个工作细节,每个细节都有自己的(相同的)重复/简单触发器,已安排.间隔是一个小时.

此作业执行的任务是下载rss源,然后下载链接到rss源中的所有媒体文件.在下载之前,它会擦除​​放置文件的目录.单次运行需要几秒到十几秒(偶尔会更多).

我们的调度方法是在新的StdSchedulerFactory上调用GetScheduler()(所有作业一次调度到同一个IScheduler实例中).我们通过立即Start()来遵循调度.

工作似乎运行良好,但经过仔细检查,我们发现偶尔 - 或几乎从未 - 运行的少数工作.

因此,例如,所有200个工作岗位应该在今晚6点40分运行.大多数人都这样做了.但少数没有.我通过查看文件时间戳来确定这一点,如果作业运行,它肯定会更新(因为它删除并重新下载文件).

我已经启用了Quartz.Net日志记录,并且还为我们的代码添加了很多日志记录语句.

我得到了一些日志消息,表明Quartz正在创建并执行一轮工作开始后大约一分钟的工作.

之后,所有活动都会停止.没有作业运行,也没有创建日志消息.零.

然后,在下一个发射间隔,Quartz再次启动,我的日志文件更新,各种文件开始下载.但是 - 它肯定看起来像一些JobDetail实例永远不会成为行的首脑(可以这么说)或者很少这样做.在整个周末,一些工作似乎经常更新,最近,其他人自周五开始流程后没有更新一次(它运行在Windows服务shell,顺便说一下).

所以...我希望有人可以帮助我理解Quartz的这种行为.

我需要确定每个工作都在运行.如果错过了触发器,我需要Quartz尽快运行它.通过阅读文档,我认为这将是默认行为 - 对于具有无限重复计数的SimpleTrigger,如果错过触发器窗口,它将重新安排作业以立即执行.似乎并非如此.有什么方法可以确定为什么Quartz没有解雇这些工作?我正在跟踪级别,他们只是不在那里.它创建并执行了大量的工作,但如果我注意到一个缺失 - 我可以找到的是它最后一次运行它(例如,有时它没有运行数小时或数天).没有关于它被跳过的原因(我希望Quartz能够记录某些内容,如果它因任何原因而跳过某个工作),等等.

任何帮助真的,真的很感激 - 我花了一整天时间试图解决这个问题.

quartz.net

5
推荐指数
1
解决办法
5053
查看次数

为CGAffineTransform设置Start Point

我使用跟随CGPathAddEllipseInRect的CAKeyframeAnimation围绕圆圈制作UIView.但是,视图似乎总是在同一个地方开始,无论它最初定位在哪个帧中.是否有某种方法可以调整路径上视图的起始位置?

谢谢!

CAKeyframeAnimation *myAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
myAnimation.fillMode = kCAFillModeForwards;
myAnimation.repeatCount = 5;
myAnimation.calculationMode = kCAAnimationPaced;
myAnimation.duration = 10.0;

CGMutablePathRef animationPath = CGPathCreateMutable();

CGPathAddEllipseInRect(animationPath, NULL, rect);

myAnimation.path = animationPath;
CGPathRelease(animationPath);

[view.layer addAnimation:myAnimation forKey:@"changeViewLocation"];
Run Code Online (Sandbox Code Playgroud)

quartz-graphics cakeyframeanimation cgpath

5
推荐指数
1
解决办法
867
查看次数

与CGContextDrawImage相比,为什么UIImageView的内存密集程度如此之高

开发iPad PDF-Reader我们决定准备渲染密集页面的高分辨率图像(其中包含许多路径),并使用这些图像而不是pdf页面来避免性能问题.我们认为这3*768 by 3*1024是可读性和渲染性能之间的良好折衷,这导致~1.5 MB的jpeg.

但是,我们测试了两个用于显示图像页面的实现.一个使用CATiledLayer子类,它也负责处理"普通"PDF页面(绘图CGContextDrawImage)和另一个使用UIImageView.后者的优点是显示和缩放非常快,但内存使用非常糟糕 - 内存大约需要30 MB(这与图像的位图大小一致).另一种方法(CATiledLayer)需要更多时间来首次显示页面,并且在缩放后需要另外两秒钟来重新渲染(类似于pdf页面,但速度要快得多)但是不会占用比显示更小图像所需的更多内存或PDF页面.

有谁知道幕后发生了什么,如果可以通过使用Quartz Framework 将低内存使用率CGContextDrawImage和高性能结合起来UIImageView.

pdf quartz-graphics uiimageview ios

5
推荐指数
1
解决办法
1214
查看次数

将 Quartz .NET 与 NHibernate 集成

我已经安装了 Quartz .NET 并创建了 Quartz 数据库。我需要使用我自己的自定义数据扩展 Quartz 作业存储。例如,当我通过 Quartz API 添加作业时,我需要在同一个数据库事务中向我自己的自定义表添加附加信息。我知道 Quartz 中有一个名为 JobStoreCMT 的类,但是我找不到任何简洁的示例来展示如何为 Quartz 提供 NHibernate 创建的事务。

.net nhibernate quartz.net

5
推荐指数
1
解决办法
1304
查看次数

java批处理程序的crontab的好替代品?

我一直在寻找我公司当前批处理系统(java SE + crontab)的替代品,因为有很多java代码/ shell脚本重复,大多数工作都是ETL并且做了非常相似的步骤而且我想提供平台独立而不是依赖于crontab,更具体的是我们的工作角色,当前的创造就业步骤是这样的:

  1. 开发满足业务需求的java程序.
  2. 在类似环境的生产中进行测试,直到满足业务需求.
  3. 将其传递给生产服务器,其中包含shell脚本,提供文件维护,java prgram执行和错误处理例程(避免运行同名的2个进程,支持邮件日志和程序错误时的开发人员,检查输出文件是否存在于java之后)如果程序与接口相关,程序结束),并指定重复数据(该程序运行的频率).

大部分相同的逻辑被设计和开发成一个系统,其中包含通用例程,这些程序或"接口"(即他们在那里称之为)是独立完成的(通常使用复制粘贴代码,因为大多数例程都相似),但我我仍然缺少一个非常重要的部分,我需要帮助,这涉及我使用的调度程序实现,我需要它来满足这两个需求之一:

- 我想保证每当我停止调度服务器进行系统更新(由于添加了新的工作等)或其他原因时,那些由于系统停机而无法运行的作业(例如3个工作可以由于系统已关闭,因此无法在下午3:00运行,即使各自的调度时间已经消失,也可以在服务器恢复运行时运行.

或者,如果第一件事不可能,那么:

- 我需要一种方法来使用新作业更新调度程序,并且还需要更新提供这些作业的jar,而无需重新启动调度程序(类似于OSGi).

这些条件中的任何一个都满足我的要求,并且会结束我对替换的搜索,我查看了Quartz,Oddjob(这是一个使用这个调度程序生产的调度程序,但是每次添加新的作业/库时都需要重新启动,不满足我的需求)和OSGi使用应用服务器,但我正在寻找更好的建议,如果你也知道更好的选择,他们也非常感激.

java osgi scheduler crontab quartz-scheduler

5
推荐指数
0
解决办法
1785
查看次数

Solr - 如何从DataImportHandler接收失败导入的通知?

我们的solr索引会根据计划刷新,也可以根据需要通过DataImportHandler完全导入进行任意刷新.我们曾多次因各种原因导致进口失败.

如何在使用DataImportHandler执行导入时收到错误发生的通知(最好是电子邮件)?

notifications solr dataimporthandler

5
推荐指数
2
解决办法
2241
查看次数

以编程方式在OSX中抓取屏幕截图

我将把一些截图抓取代码(C++)的linux移植到osx.当前的解决方案在xvfb中运行图形应用程序,然后使用xlib从显示中获取屏幕截图.(如果我们在没有xvfb的情况下运行,那也将支持).

所以我理解osx正在远离 X11,所以我的问题是除了xlib之外还要使用什么来实现呢?我找到了Quartz Display Services.现在使用是否有意义?这会与xvfb一起使用吗?

c++ macos screenshot quartz-graphics xvfb

5
推荐指数
1
解决办法
3670
查看次数

Quartz 与 Spring 未提交

我使用石英、Spring 和 Hibernate 作为 JPA 提供程序。数据库是甲骨文。

我有一种方法可以将文件写入文件系统并使用详细信息更新数据库。可以通过两种方式调用此方法:

  1. 使用网络服务
  2. 或者,作为预定的 quatrz 作业。

我已将石英设置为:

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" scope="singleton">
        <property name="autoStartup" value="true"/>
        <property name="waitForJobsToCompleteOnShutdown" value="true"/>
        <property name="overwriteExistingJobs" value="true"/>
        <property name="dataSource" ref="dataSource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="quartzProperties">
            <props>
                <prop key="org.quartz.scheduler.instanceName">FileScheduler</prop>
                <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
                <prop key="org.quartz.jobStore.misfireThreshold">6000</prop>
                <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
                <prop key="org.quartz.jobStore.driverDelegateClass">${driverDelegateClass}</prop>
                <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
                <prop key="org.quartz.jobStore.isClustered">true</prop>
                <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
                <prop key="org.quartz.threadPool.threadCount">5</prop>
                <prop key="org.quartz.threadPool.threadPriority">5</prop>
            </props>
        </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

这种方法是使用 spring 管理的事务。

问题是当这个方法被石英调度器调用时,文件被创建但数据库没有更新(应该有两个表更新和一个表插入)。

我也启用了 hibernate show_SQL,但在调度程序的情况下,不会记录更新\插入语句。

尽管当 Web 服务请求调用此方法时,这可以正常工作。日志也显示更新\插入语句。

更新 1

总结我的问题,这就是我想要实现的目标:

  1. 在员工表中创建一条新记录。
  2. 将employee_id 保存在job_store(石英)中。
  3. 当触发器被触发时,quartz 返回employee_id
  4. 根据此键检索(加载)员工记录。
  5. 向员工发送电子邮件
  6. 更新状态为“已发送”的通知(插入语句)

最后,我希望所有表格都得到更新。 …

spring hibernate jpa quartz-scheduler

5
推荐指数
1
解决办法
6584
查看次数

需要动态设置quartz cron表达式

我在我的Web应用程序(Servlet Web应用程序)中使用了quartz,下面是quartz.property文件和quartz.job.xml的快照.

quartz.property

#===================================================
# Configure the Job Initialization Plugin
#===================================================

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false


<?xml version='1.0' encoding='utf-8'?>
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
  version="1.8">

    <schedule>
        <job>
            <name>my-very-clever-job</name>
            <group>MYJOB_GROUP</group>

            <description>The job description</description>
            <job-class>com.acme.scheduler.job.ReportJob</job-class>
        </job>

        <trigger>
            <cron>
                <name>my-trigger</name>
                <group>MYTRIGGER_GROUP</group>
                <job-name>my-very-clever-job</job-name>

                <job-group>MYJOB_GROUP</job-group>
                <!-- trigger every night at 4:30 am -->
                <cron-expression>0 30 4 * * ?</cron-expression>

            </cron>
        </trigger>
    </schedule>
</job-scheduling-data>
Run Code Online (Sandbox Code Playgroud)

按顺序,每件事都很好.我需要允许用户按照他们想要的方式更改时间(cron表达式).我的问题是如何动态设置cron表达式.

quartz-scheduler

5
推荐指数
1
解决办法
1万
查看次数

Terraform:我可以设置变量类型=任何字典/对象吗

有没有办法允许任何类型的字典/对象作为输入变量?

我有一个使用 lambda 创建 cron 表达式的模块,并且我正在尝试添加一个变量来接受字典以传递到资源调用中。

我只想允许任何长度的字典。其中键和值的任何类型。

最初,我尝试过:

variable vars {
  type = object
}
Run Code Online (Sandbox Code Playgroud)

但这是不允许的。

现在我只是将类型设置为空,因此它会接受任何内容,但这似乎不是一个好的做法。

terraform

5
推荐指数
1
解决办法
4715
查看次数