Aws lambda 我可以在AWS Lambda中使用Apache Camel吗?
ApacheCamel具有许多特性,使事件处理变得优雅且易于编码。能够在AWS Lambda中利用这一点将非常有用 当然,并不是所有的特性都是合适的,尤其是任何需要长期流程的特性 此外,还需要考虑管理持久状态,例如幂等存储库和节流Aws lambda 我可以在AWS Lambda中使用Apache Camel吗?,aws-lambda,apache-camel,Aws Lambda,Apache Camel,ApacheCamel具有许多特性,使事件处理变得优雅且易于编码。能够在AWS Lambda中利用这一点将非常有用 当然,并不是所有的特性都是合适的,尤其是任何需要长期流程的特性 此外,还需要考虑管理持久状态,例如幂等存储库和节流 但它在简单的情况下非常有用。事实证明,使用Redhat的Quarkus框架很简单 我举了一个简单的例子: 骆驼路线很简单: from("direct:input").to("log:input") .process(ne
但它在简单的情况下非常有用。事实证明,使用Redhat的Quarkus框架很简单 我举了一个简单的例子: 骆驼路线很简单:
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);
}
}
公共类Lambda实现RequestHandler{
@注入
CamelContext和CamelContext;
@凌驾
公共输出对象handleRequest(输入对象输入,上下文){
返回camelContext.createProducerTemplate().requestBody(“direct:input”,input,OutputObject.class);
}
}
CDI用于将CamelContext注入请求处理程序,然后CamelContext对象用于创建
ProducerTemplate,可用于调用驼峰路由
该示例的Maven项目源自Quarkus lambda示例,Apache Camel依赖项源自Camel Quarkus示例