KivaKit和AWS Lambda
KivaKit 1.2增加了对AWS Lambda的无缝支持。用于REST和GRPC的Lambdas可以被添加到KivaKit微服务中,而不需要做任何改动(这将使这篇文章变得简短)。
创建一个Lambda
我们已经在微服务文章中看到了一个用于REST的KivaKit请求处理器。我们将简单地重复使用这段代码作为我们的Lambda请求处理程序。作为提醒,该文章中的代码看起来像这样:
@OpenApiIncludeType(description = "Request for divisive action")
public class DivisionRequest extends BaseMicroservletRequest
{
@OpenApiIncludeType(description = "Response to a divide request")
public class DivisionResponse extends BaseMicroservletResponse
{
@Tag(1)
@Expose
@OpenApiIncludeMember(description = "The result of dividing",
example = "42")
int quotient;
public DivisionResponse()
{
this.quotient = dividend / divisor;
}
public String toString()
{
return Integer.toString(quotient);
}
}
@Tag(1)
@Expose
@OpenApiIncludeMember(description = "The number to be divided",
example = "84")
private int dividend;
@Tag(2)
@Expose
@OpenApiIncludeMember(description = "The number to divide the dividend by",
example = "2")
private int divisor;
public DivisionRequest(int dividend, int divisor)
{
this.dividend = dividend;
this.divisor = divisor;
}
public DivisionRequest()
{
}
@Override
@OpenApiRequestHandler(summary = "Divides two numbers")
public DivisionResponse onRequest()
{
return listenTo(new DivisionResponse());
}
@Override
public Class<DivisionResponse> responseType()
{
return DivisionResponse.class;
}
@Override
public Validator validator(ValidationType type)
{
return new BaseValidator()
{
@Override
protected void onValidate()
{
problemIf(divisor == 0, "Cannot divide by zero");
}
};
}
}
添加一个Lambda服务
与添加REST服务的方式类似,Lambda服务的添加方式是这样的:
public class DivisionMicroservice extends Microservice
{
[...]
@Override
public MicroserviceLambdaService onNewLambdaService()
{
return new DivisionLambdaService(this);
}
}
onNewLambdaService()方法返回DivisionLambdaService的一个实例,它扩展了MicroserviceLambdaService:
public class DivisionLambdaService extends MicroserviceLambdaService
{
[...]
@Override
public void onInitialize()
{
mount("division", "1.0", DivisionRequest.class);
}
}
当服务被初始化时,对onInitialize()中mount()方法的调用被用来将我们的lambda的名字和它的版本与处理程序DivisionRequest联系起来。其他的就不需要了。
代码
KivaKit微服务API,包括对AWS Lambda的支持,可在Maven Central的这些坐标上找到:
<dependency>
<groupId>com.telenav.kivakit</groupId>
<artifactId>kivakit-microservice</artifactId>
<version>1.2.0</version>
</dependency>