【发布时间】:2019-05-02 11:52:58
【问题描述】:
我正在尝试使用 ballerina,想知道我们是否可以将作为 kafka 消费者的 ballerina 程序公开为 AWS Lambda 函数。
【问题讨论】:
-
根据我的回答,这是不可能的。你能解释一下你想要实施的确切案例吗?然后我们可以想出另一种实现方式。
标签: aws-lambda cloud integration ballerina ballerina-kafka
我正在尝试使用 ballerina,想知道我们是否可以将作为 kafka 消费者的 ballerina 程序公开为 AWS Lambda 函数。
【问题讨论】:
标签: aws-lambda cloud integration ballerina ballerina-kafka
AWS Lambda 函数需要从某个地方触发(不能作为侦听器工作)。在这种情况下,您将无法使用 Amazon AWS 公开 Ballerina Kafka 消费者。
【讨论】:
您不能将 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。
【讨论】:
<BALLERINA_HOME>/bre/lib/ 目录内是否有两个或更多wso2-kafka-*.jar 文件。卸下它们,然后重新安装Ballerina-Kafka 连接器。 (或者干脆你可以只删除以前版本的 jar,并保留最新的并继续)
wso2-kafka-*.jar) 放在生成的 lambda zip 文件中,在根目录的“lib”目录中。您需要在 zip 文件中创建此目录。否则连接器功能将不起作用。