【问题标题】:Expression to run job on end of every month : Camel,Quartz每个月底运行工作的表达式:骆驼,石英
【发布时间】:2021-01-30 21:30:18
【问题描述】:

我试图在每个月底运行我的工作,但每次添加 cron 表达式时都会出错:

from("timer://ratingTimer?cron=0+52+12+++") 这是我试图在特定时间运行我的工作。 原因:org.apache.camel.ResolveEndpointFailedException:无法解析端点:timer://ratingTimer?cron=0+52+12+%3F++* 由于:有 1 个参数不能设置在端点上。如果参数拼写正确并且它们是端点的属性,请检查 uri。未知参数=[{cron=0 52 12 ? * *}]

【问题讨论】:

标签: cron apache-camel quartz


【解决方案1】:

我们将在每个月的 28、28、29 和 31 日安排 cron。现在查找今天是否是该月的最后一天。要找到它,检查第二天是否是第二天的 01 号,然后只执行任何命令。

下面的命令将返回第二天的日期。

日期 +%d -d 明天

现在检查明天是否是 01。

[ "$(date +%d -d 明天)" = "01" ] && echo "True"

如果第二天是 01,那么上面的命令将在屏幕上打印“True”。在这里,您可以在 crontab 中使用上述脚本并使用您的命令更改 echo。

59 23 28-31 * * [“$(date +%d -d明天)”=“01”] && /root/script.sh

在下面的网址中查看更多信息。

CRON job to run on the last day of the month

quartz scheduler: run on last day of the month

from("cron://ratingTimer?schedule=0+0+3+L+*+?")

【讨论】:

  • 这似乎在 shell 脚本中,但是我可以将 Java 中的更改合并到我读过的关于骆驼上下文的模式和计时器的内容中吗?
  • 而且我的不是纯粹的 cron 作业,而是添加到运行服务的路由。
  • 使用 0 0 3 L * ? .
  • 谢谢,但我仍然不知道如何用路由计时器映射它。 from("timer://someTimer?cron=0+52+12+*+*+*").setBody().simple("现在运行服务").to("bean:ServiceImpl?method=someMethod" );
猜你喜欢
  • 1970-01-01
  • 2022-06-11
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2020-10-22
  • 2019-01-23
相关资源
最近更新 更多