在本地使用Spring Cloud通过计时器触发器运行Azure Function

时间:2020-02-06 12:25:10

标签: spring-boot azure-functions spring-cloud

我正在尝试创建带有计时器触发器的 Azure函数,以计划(本地)作业。我正在使用 Spring Cloud 。我无法创建Bean并安排触发器。我找不到Spring Cloud安排计时器触发的配置。我不确定缺少

我的SpringBoot应用程序:

@SpringBootApplication
public class Config {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Config.class, args);
    }
    @Bean
    public void startTimer() {
        System.out.println("startTimer begin test");
        TimerTriggerShiftNew ti;        
    }   
}
class TimerTest {

    public void startTimer() {
        System.out.println("startTimer begin");
    }
}

我的计时器触发器:

public class EmailTimeTrigger{

    @FunctionName("emailtimetrigger")
    public void run(
        @TimerTrigger(name = "timerInfo", schedule = "0 */2 * * * *") String timerInfo,
        final ExecutionContext context
    ) {
        context.getLogger().info("Java Timer trigger function executed at: " + LocalDateTime.now());
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您应该将函数名称从 startTimer 更改为 emailtimetrigger,就像您在 @functionName 你应该在你的 pom.xml 中添加一些注释

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <azure.functions.maven.plugin.version>1.3.4</azure.functions.maven.plugin.version>
    <azure.functions.java.library.version>1.3.4</azure.functions.java.library.version>
    <functionAppName>spring-azure-function</functionAppName>
    <functionAppRegion>francecentral</functionAppRegion>
    <stagingDirectory>${project.build.directory}/azure-functions/${functionAppName}</stagingDirectory>
    <functionResourceGroup>spring-azure-function-rg</functionResourceGroup>
    <start-class>com.targa.labs.dev.springfunctionsazure.SpringFunctionsAzureApplication</start-class>
    <wrapper.version>1.0.23.RELEASE</wrapper.version>
</properties>

您可以找到完整的示例 here