亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號