aws-lambda - 我可以在 AWS Lambda 中使用 Apache Camel 吗?
问题描述
Apache Camel 具有许多使事件处理优雅且易于编码的特性。能够在 AWS Lambda 中利用这一点会很有用。
当然,并非所有功能都适用,尤其是任何需要长期过程的功能。
还需要考虑管理持久状态,例如幂等存储库和节流。
但在简单的情况下它会非常有用。
解决方案
事实证明,使用 Redhat 的 Quarkus 框架很简单。
我做了一个简单的例子:https ://github.com/jcable/SampleCamelLambda
骆驼路线是微不足道的:
from("direct:input").to("log:input")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
InputObject input = exchange.getIn().getBody(InputObject.class);
String result = input.getGreeting() + " " + input.getName();
OutputObject out = new OutputObject();
out.setResult(result);
out.setRequestId("aws-request-1");
exchange.getIn().setBody(out);
}
});
使路由适应 Lambda 使用 Quarkus RequestHandler。
public class Lambda implements RequestHandler<InputObject, OutputObject> {
@Inject
CamelContext camelContext;
@Override
public OutputObject handleRequest(InputObject input, Context context) {
return camelContext.createProducerTemplate().requestBody("direct:input", input, OutputObject.class);
}
}
CDI 用于将 CamelContext 注入到请求处理程序中,然后 camelContext 对象用于创建可用于调用 Camel 路由的 ProducerTemplate。
该示例的 Maven 项目源自 Quarkus lambda 示例,其中 Apache Camel 依赖项来自 Camel Quarkus 示例。
推荐阅读
- java - 如何使用 JOOQ Query Builder 使用使用常量值的 select 语句构建 Insert into
- postgresql - POSGTRESQL 9.10 - 从 JSON 数组返回最大值
- java - 通过本地 java 应用程序执行 html 按钮的任务
- reactjs - 来自道具的背景图像不适用于样式化组件
- r - Rbind:将源名称添加为新组合数据集中的列和/或变量
- dart - 使用json给类添加值并在flutter中创建listview
- postgresql - 升级到想要使用校验和的 postgres 10
- unit-testing - 在 Jest 中生成 HTML coverageReport 的命令行方式
- python - 循环时慢熊猫
- android - 读取 json 中的数组