【问题标题】:Can we use kafka consumer with Ballerina as a AWS Lambda function?我们可以将 kafka 消费者与 Ballerina 一起用作 AWS Lambda 函数吗?
【发布时间】:2019-05-02 11:52:58
【问题描述】:

我正在尝试使用 ballerina,想知道我们是否可以将作为 kafka 消费者的 ballerina 程序公开为 AWS Lambda 函数。

【问题讨论】:

  • 根据我的回答,这是不可能的。你能解释一下你想要实施的确切案例吗?然后我们可以想出另一种实现方式。

标签: aws-lambda cloud integration ballerina ballerina-kafka


【解决方案1】:

AWS Lambda 函数需要从某个地方触发(不能作为侦听器工作)。在这种情况下,您将无法使用 Amazon AWS 公开 Ballerina Kafka 消费者。

【讨论】:

    【解决方案2】:

    您不能将 Kafka 侦听器创建为 AWS lambda,但您可以将非侦听器类型的 Kafka 消费者创建为 AWS lambda 函数。

    您可以编写 ballerina 函数来处理 Kafka SimpleConsumer 对象的函数(当前 Ballerina-By-Guide for Kafka 将 Kafka 消费者视为服务侦听器),并使用该函数创建 AWS lambda。

    WSO2-Kafka 连接器提供各种功能来手动处理 Kafka 消费者。阅读文档以获取更多信息,它位于WSO2-Kafka release

    您可以通过在函数顶部添加 AWS lambda 注释来生成 AWS lambda。

    @awslambda:Function
    function kafkaConsumerService(awslambda:Context ctx, json inputs) returns json|error {
    
      kafka:ConsumerConfig consumerConfig = {
        // Consumer configs
      };
    
      kafka:SimpleConsumer kafkaConsumer = new(consumerConfig);
    
      // You can implement Kafka consume functionalities here.
      // For an example, you can poll consumer using kafkaConsumer->poll(<duration>);
      var results = kafkaConsumer->poll(1000);
    
      if (results is error) {
        // Handle error
      } else {
        // Handle records received
      }
    }
    

    然后您可以按照 AWS Lambdas 上的 Ballerina 文档生成 AWS Lambdas。

    【讨论】:

    • 我通过导入 wso2/kafka 尝试了一个 echo Lambda 函数,但是 Lambda 函数在测试时无法解析它,它抛出一个错误说“native function not available wso2/kafka:0.0.0:SimpleConsumer .registerListener”。你能告诉我我应该在这里做什么吗?
    • @PrabakaranThodithotSembiyan 似乎您有两个 Kafka 连接器版本驻留在同一个 Ballerina 发行版中。检查&lt;BALLERINA_HOME&gt;/bre/lib/ 目录内是否有两个或更多wso2-kafka-*.jar 文件。卸下它们,然后重新安装Ballerina-Kafka 连接器。 (或者干脆你可以只删除以前版本的 jar,并保留最新的并继续)
    • 我将我的芭蕾舞演员函数暴露为 Lambda,在调用 lambda 函数时,我得到了上述错误。另外,我在 bre/lib 中只有一个版本的 wso2-kafka-*.jar。
    • @PrabakaranThodithotSembiyan 您需要将 Kafka 连接器 jar (wso2-kafka-*.jar) 放在生成的 lambda zip 文件中,在根目录的“lib”目录中。您需要在 zip 文件中创建此目录。否则连接器功能将不起作用。
    • 嗨 Thisaru,我在使用您共享的代码(使用我的 kafka 消费者配置)时遇到以下错误。 “此处不允许客户端对象声明,请在函数顶部或模块级别声明” - 在“kafka:SimpleConsumer kafkaConsumer = new(consumerConfig);”你能帮忙解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2022-01-06
    相关资源
    最近更新 更多