运行 micronaut 本地无服务器
Running micronaut serverless locally
我正在尝试使用函数创建带有 micronaut 的 AWS Lambda 函数,即我创建了我的 poc 项目:
mn create-function-app --build=maven --jdk=11 micronaut-test
我可以非常轻松地构建它并将其部署到 AWS,但我想知道是否有办法在本地 运行 它以便我可以像 运行 常规测试一样快速测试更改
的 micronaut 应用
mvn mn:run
现在只是示例应用程序,重新表述我的问题; BookRequestHandler 中的 execute 方法是否可以在不上传到 AWS 的情况下触发?
提前致谢。
Maven 配置文件可用于 select 运行 时间(在此示例中使用 netty)和主要 class:
<profiles>
<profile>
<id>local</id>
<properties>
<exec.mainClass>micronaut.Application</exec.mainClass>
<micronaut.runtime>netty</micronaut.runtime>
</properties>
<dependencies>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-server-netty</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
使用控制器创建主 class,控制器具有调用函数的 Post 方法
package micronaut;
import io.micronaut.http.annotation.Body;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
import io.micronaut.runtime.Micronaut;
import micronaut.test.Book;
import micronaut.test.BookRequestHandler;
import micronaut.test.BookSaved;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
@Controller()
public static class LambdaController {
private static final BookRequestHandler handler = new BookRequestHandler();
@Post
public BookSaved execute(@Body Book book) {
return handler.execute(book);
}
}
}
和运行以及
mvnw mn:run -Plocal
现在您可以使用
curl --location --request POST 'http://localhost:8080/' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test"}'
回归
{
"name": "Test",
"isbn": "2a163c3d-4bd6-444d-914d-58daf3e649b8"
}
这有点 hacky,要测试您的功能,您可以查看 micronaut-test/src/test/java/micronaut/test/BookRequestHandlerTest。java class 或查看 Testing Lambda Handlers官方文档.
注意: 对于使用 mn create-app -f aws-lambda ... 创建的应用程序不需要 in pom.xml,生成Application.java.
我正在尝试使用函数创建带有 micronaut 的 AWS Lambda 函数,即我创建了我的 poc 项目:
mn create-function-app --build=maven --jdk=11 micronaut-test
我可以非常轻松地构建它并将其部署到 AWS,但我想知道是否有办法在本地 运行 它以便我可以像 运行 常规测试一样快速测试更改
的 micronaut 应用mvn mn:run
现在只是示例应用程序,重新表述我的问题; BookRequestHandler 中的 execute 方法是否可以在不上传到 AWS 的情况下触发?
提前致谢。
Maven 配置文件可用于 select 运行 时间(在此示例中使用 netty)和主要 class:
<profiles>
<profile>
<id>local</id>
<properties>
<exec.mainClass>micronaut.Application</exec.mainClass>
<micronaut.runtime>netty</micronaut.runtime>
</properties>
<dependencies>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-server-netty</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
使用控制器创建主 class,控制器具有调用函数的 Post 方法
package micronaut;
import io.micronaut.http.annotation.Body;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
import io.micronaut.runtime.Micronaut;
import micronaut.test.Book;
import micronaut.test.BookRequestHandler;
import micronaut.test.BookSaved;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
@Controller()
public static class LambdaController {
private static final BookRequestHandler handler = new BookRequestHandler();
@Post
public BookSaved execute(@Body Book book) {
return handler.execute(book);
}
}
}
和运行以及
mvnw mn:run -Plocal
现在您可以使用
curl --location --request POST 'http://localhost:8080/' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test"}'
回归
{
"name": "Test",
"isbn": "2a163c3d-4bd6-444d-914d-58daf3e649b8"
}
这有点 hacky,要测试您的功能,您可以查看 micronaut-test/src/test/java/micronaut/test/BookRequestHandlerTest。java class 或查看 Testing Lambda Handlers官方文档.
注意: 对于使用 mn create-app -f aws-lambda ... 创建的应用程序不需要