Aws lambda 我可以在AWS Lambda中使用Apache Camel吗?

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

ApacheCamel具有许多特性,使事件处理变得优雅且易于编码。能够在AWS Lambda中利用这一点将非常有用

当然,并不是所有的特性都是合适的,尤其是任何需要长期流程的特性

此外,还需要考虑管理持久状态,例如幂等存储库和节流


但它在简单的情况下非常有用。

事实证明,使用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示例