试图将@Client注入到Groovy函数中

时间:2018-06-12 08:14:36

标签: groovy aws-lambda micronaut

我正在尝试编写一个Micronaut AWS Groovy Lambda,它将HTTPS调用到另一个服务。我已经关注了MN Docs并使用以下方式创建了我的项目:

 mn create-function hello-world -lang groovy

这给了我一个骨架“hello-world”项目,我可以运行一个功能测试。

然后我尝试修改Groovy函数(hello.world.HelloWorldFunction)以注入一个HTTP客户端,目的是在我的函数中调用API:

import static io.micronaut.http.HttpRequest.GET

@Field @Inject @Client("https://www.googleapis.com/books/v1") RxHttpClient httpClient

Maybe<String> helloWorld() {
    httpClient.retrieve(GET("/volumes?q=isbn:0747532699"))
              .firstElement()

}

完成此操作后,我现在在运行功能测试时遇到异常:

08:51:25.269 [nioEventLoopGroup-1-5] ERROR 
i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: 
Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient

我几乎肯定做错了什么,但我在如何弄清楚什么方面有点亏。感谢任何指针。

非常感谢,

埃德

1 个答案:

答案 0 :(得分:0)

找到答案。这是1.0.0.M1中的错误。它已经在主人中修复了,但是可以通过从源代码构建Micronaut并使用它来解决这个问题。

此外,我发现我正在返回Lambda函数(Maybe<String>)不支持的类型。从master构建MN并将其更改为支持的返回类型后,现在一切正常。