我是 greengrass 核心应用程序的初学者,并按照 greengrass 开发人员指南完成了演示设置。但我仍然对 lambda 函数的工作原理感到困惑。下面是我想寻求帮助的问题。
我想在我的树莓派 3 中运行一个 lambda 函数作为 greengrass 核心,它可以接收多个 IoT 设备的 MQTT 消息并根据任务 tpye(即各种信号过滤或家用机器学习算法)进行一些处理。处理后,我需要使用 MQTT 将信息发送到我自己的服务器(不是 AWS IoT 云),以便对某些主题进行更高级别的处理。
我的问题如下(我想使用JAVA语言): 1要接收连接到GGC的多个aws iot设备,我是否需要在aws-iot-device-sdk-java中设置AWSIoTMQTTClient?我还在 aws_greengrass_core_sdk_java 中找到了“IotDataClient”类,它有什么用?AWSIoTMQTTClient 有什么不同。这里真的很混乱,即使有 sdk 文档描述。
2 在 GGC 中,当我部署我的 lambda 函数时,它是否有一个内部 MQTT 代理来接收 AWSIoTMQTTClient 的消息?
3 对于 lambda 函数,在 GGC 上创建和部署后,它会开始工作。我看到有一种方法可以从 lambda 函数调用另一个 lambda 函数。我不明白 lambda 的工作原理。
4 我可以有多个不同用途的lambda函数,例如,一个只接收MQTT消息,另一个是处理接收到的信息,另一个是将处理后的信息发送到我自己的MQTT服务器?如果允许,如何使工作一起执行所有任务。
5 我看到 lambda 接口有事件输入,只有当某些特定主题到达 lambda 函数中定义的 AWSIoTMQTTClient 时,我如何才能调用 lambda?
6 下面是 JAVA lambda 接口模板: outputType handler-name(inputType input, Context context) { ... } 我认为它应该允许用户根据需要定义输入数据类型。但问题是如果我定义输入类型是字符串。如何让 lambda 处理程序接收字符串。开发指南没有明确的描述。
7 最后,能否请您分享一些上述问题的演示代码?
感谢您的关注和提前帮助。非常期待您的帮助