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

我想使用一些参数从另一个 lambda 函数 B 调用 Lambda 函数 A。


以下是调用 lambda 函数。


@SpringBootApplication

public class Application  extends SpringBootServletInitializer implements CommandLineRunner {

@Autowired

private ConfigurableApplicationContext context;

public static void main(String[] args) {

    SpringApplication.run(Application.class, args);

}


@Override

public 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 函数的代码。


@SpringBootApplication

public class Application  extends SpringBootServletInitializer implements CommandLineRunner {

@Autowired

private ConfigurableApplicationContext context;

@Autowired

private DeliveryCycleService deliveryCycleService;

public static void main(String[] args) {

    SpringApplication.run(Application.class, args);

}


@Override

public void run(String... args) {

    deliveryCycleService.printMessage(args[0]);

    SpringApplication.exit(context);

}

正如您所看到的,我尝试通过从调用方法创建字符串数组来传递参数,但我进入了ArrayOutOFBoundException另一个方法,这意味着参数实际上并未到达调用的方法。如果我不传递参数,它可以正常工作,但对于我的用例,我需要传递参数并异步调用该方法。


蝴蝶不菲
浏览 95回答 1
1回答

慕的地10843

这是从 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 - 验证参数值并验证用户或角色是否有权调用该函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java