Quarkus 应用作为带时间触发器的 Azure 函数

Quarkus app as Azure function with time trigger

我正在尝试开发一个 quarkus 应用程序,它将 运行 作为一个函数并由计时器触发。

我的function.json看起来像这样

{
  "scriptFile" :  "../${project.build.finalName}.jar",
  "entryPoint" : "yoink.DoingService.sayDoing",
  "bindings" : [ {
    "type" : "timerTrigger",
    "direction" : "in",
    "name" : "keepAliveTrigger",
    "schedule" : "*/10 * * * * *"
  } ]
}

这是我的代码

@ApplicationScoped
public class DoingService {

  @Inject
  BoingService boingService;

  public void sayDoing( ){
    boingService.sayBoing();
    System.out.println("Doiing");
  }
}
@ApplicationScoped
public class BoingService {

  @FunctionName("keepAlive")
  public void sayBoing(){
    System.out.println("Boooiiiiin");
  }

}

如果我执行此操作,我会得到一个 npe。如果我从 sayDoing() 中删除 boingService.SayBoing() 它的工作。

我是否必须选择不同的入口点,或者我还能做些什么来初始化我的上下文?

你得到一个 NPE,因为 Quarkus 没有正确加载,所以 CDI 容器没有连接依赖项。

Quarkus 仅通过其 HTTP 层支持 运行 Azure 函数,它不支持 运行 像您设置的任意方法。

您可以查看以下有关 Quarkus Azure 函数支持的指南:https://quarkus.io/guides/azure-functions-http

您可以通过 Quarkus github 存储库上的新扩展提案提出支持此类 Azure 功能的扩展提案:https://github.com/quarkusio/quarkus/issues/new?assignees=&labels=kind%2Fextension-proposal&template=extension_proposal.md&title=