为了账号安全,请及时绑定邮箱和手机立即绑定

java中如何将参数从一个lambda传递到另一个?

java中如何将参数从一个lambda传递到另一个?

蝴蝶不菲 2023-11-10 16:35:56
我想使用一些参数从另一个 lambda 函数 B 调用 Lambda 函数 A。以下是调用 lambda 函数。@SpringBootApplicationpublic class Application  extends SpringBootServletInitializer implements CommandLineRunner {@Autowiredprivate ConfigurableApplicationContext context;public static void main(String[] args) {    SpringApplication.run(Application.class, args);}@Overridepublic void run(String... args) {    DCService dcService = LambdaInvokerFactory.builder().lambdaFunctionNameResolver(            (method, lambdaFunction, lambdaInvokerFactoryConfig) -> "EventPlanDCFunction-Dev")            .build(DCService.class);    log.info("Response from DC service :: {}",dcService.getClass());    String[] params = new String[]{"Subir has invoked"};    dcService.run(params);    SpringApplication.exit(context);}}以下是文件的代码DCService.java。public interface DCService {@LambdaFunction(functionName = "DeliveryCycleLambdaHandler",invocationType = InvocationType.Event)void run(String... params);}以下是我要调用的 lambda 函数的代码。@SpringBootApplicationpublic class Application  extends SpringBootServletInitializer implements CommandLineRunner {@Autowiredprivate ConfigurableApplicationContext context;@Autowiredprivate DeliveryCycleService deliveryCycleService;public static void main(String[] args) {    SpringApplication.run(Application.class, args);}@Overridepublic void run(String... args) {    deliveryCycleService.printMessage(args[0]);    SpringApplication.exit(context);}} 正如您所看到的,我尝试通过从调用方法创建字符串数组来传递参数,但我进入了ArrayOutOFBoundException另一个方法,这意味着参数实际上并未到达调用的方法。如果我不传递参数,它可以正常工作,但对于我的用例,我需要传递参数并异步调用该方法。
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

  • 这是从 lambda 函数调用另一个 lambda 的基本代码。AWS SDK 文档


try {



            InvokeRequest invokeRequest = new InvokeRequest();

            invokeRequest.setFunctionName(FunctionName);

            invokeRequest.setPayload(ipInput);



            returnDetails = byteBufferToString(

                    lambdaClient.invoke(invokeRequest).getPayload(),

                    Charset.forName("UTF-8"),logger);

        } catch (Exception e) {


            logger.log(e.getMessage());

        }

要异步调用另一个 lambda 函数,请设置InvocationType为Event。AWS API 文档


以下是调用类型RequestResponse、Event、DryRun。


RequestResponse(默认)- 同步调用该函数。保持连接打开,直到函数返回响应或超时。API 响应包括函数响应和附加数据。


事件 - 异步调用该函数。将多次失败的事件发送到函数的死信队列(如果已配置)。API 响应仅包含状态代码。


DryRun - 验证参数值并验证用户或角色是否有权调用该函数。


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信