Azure应用服务中的Quartz设置失败

问题描述 投票:0回答:1

我有一个Azure App服务,并且正在运行。Spring引导应用程序已部署。当我尝试在Spring引导应用程序中添加Quartz调度器设置时,它在本地工作正常。但当我们移动到Azure应用程序时,调度器设置没有启动,并出现以下消息。

基本上它在寻找主机名,在Azure App服务中我们能找到主机名吗?有什么配置需要解析主机名吗?

2020-05-08 11:35:57.155 ERROR 123 --- [main] org.quartz.impl.StdSchedulerFactory      : Couldn't generate instance Id!
org.quartz.SchedulerException: Couldn't get host name!at org.quartz.simpl.SimpleInstanceIdGenerator.generateInstanceId(SimpleInstanceIdGenerator.java:36)at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1247)at 

请注意:在Quartz中注释属性会设置默认值,但我们需要用Auto approachorg.quartz.schedule.instanceId=AUTO。

azure azure-web-sites quartz-scheduler
1个回答
1
投票

我不知道你是否可以得到你的代码正在运行的应用程序服务的主机名,但你可以使用 spring.quartz.properties.org.quartz.scheduler.instanceIdGenerator.class=CustomInstanceIDGenerator.class 如上所述 本博文 其中CustomInstnaceIDGenerator是

public class CustomInsntanceIdGenerator implements InstanceIdGenerator {

    @Override
    public String generateInstanceId() throws SchedulerException {
        try {
            return UUID.randomUUID().toString();
        } catech (Exception ex) {
            throw new SchedulerException("Couldn't genereate UUID", ex);
        }
    }
}

这将允许你不依赖于主机名。

EDIT: 试试这个

private String getComputerName()
{
    Map<String, String> env = System.getenv();
    if (env.containsKey("COMPUTERNAME"))
        return env.get("COMPUTERNAME");
    else if (env.containsKey("HOSTNAME"))
        return env.get("HOSTNAME");
    else
        return "Unknown Computer";
}

0
投票

当你使用 spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO 应用程序属性。为了克服这个问题,你必须将 127.0.0.1 <machine ip> 如果不在你的主机文件中,它将抛出 java.net.UnknownHostException: ip-1x-xx-xx-2xx: Temporary failure in name resolution 或者,如果你想从系统属性中赋予一些独特的价值,你必须改变spring.quartz.properties.org.quartz.scheduler.instanceId=SYS_PROP 根据文档。

org.quartz.scheduleer.instanceId。

可以是任何字符串,但是对于所有的调度器来说必须是唯一的,就像在集群中的同一个 "逻辑 "调度器一样。如果你希望生成Id,你可以使用 "AUTO "作为instanceId的值。如果你希望这个值来自系统属性 "org.quartz.schedule.instanceId",也可以使用 "SYS_PROP"。

© www.soinside.com 2019 - 2024. All rights reserved.