[{"data":1,"prerenderedAt":81},["ShallowReactive",2],{"content-guides-refactoring-serverless-replace_polling_with_callback":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":7,"contributorPaths":8,"menuType":12,"contentName":13,"slug":14,"readingTime":15,"menu":16,"nextDocItem":69,"previousDocItem":61},"\u003Ch2>Description\u003C\u002Fh2>\n\u003Cp>Step Functions provide integration patterns to interact with services invoked. Waiting for a long-running process might lead users to build a polling workflows including control flows (e.g. Choice, Map, Wait) or calls made against other AWS services (e.g. LambdaInvoke). This would lead to the before architecture shown below where a Lambda function is invoked repeatedly after a specified wait period to continue with the workflow once the message was processed. \u003C\u002Fp>\n\u003Cp>An example might look as follows:\u003C\u002Fp>\n\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Freplace_polling_before.png\"\u002F>\n\n\n\u003Ch2>Solution\u003C\u002Fh2>\n\u003Cp>Use \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-to-resource.html\">Step Function&#39;s Callback Integration Pattern\u003C\u002Fa> to call a service with a task token and have Step Functions wait until that token is returned with a payload.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Freplace_polling_refactored.png\"\u002F>\n\n\u003Cp>See the CDK implementation of this pattern in Typescript on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Faws-refactoring-to-serverless\u002Fblob\u002Fmain\u002Fimplementation\u002Freplace-polling-with-callback\u002FREADME.md\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch2>Considerations\u003C\u002Fh2>\n\u003Ch4>Advantages\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>The Step function state machine workflow waits until the callback token is received. This abandons the need for a polling machanism and reduces the number of function integrations.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Applicability\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>The Wait for a Callback with the Task Token Integration Pattern is available for \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-supported-services.html\">supported services only\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Related Refactorings\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\".\u002Fextract_send_message\">Extract Send Message\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",{"title":6},"Replace Polling with Callback","## Description\n\nStep Functions provide integration patterns to interact with services invoked. Waiting for a long-running process might lead users to build a polling workflows including control flows (e.g. Choice, Map, Wait) or calls made against other AWS services (e.g. LambdaInvoke). This would lead to the before architecture shown below where a Lambda function is invoked repeatedly after a specified wait period to continue with the workflow once the message was processed. \n\nAn example might look as follows:\n\n\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Freplace_polling_before.png\"\u002F>\n\n\n## Solution\n\nUse [Step Function's Callback Integration Pattern](https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-to-resource.html) to call a service with a task token and have Step Functions wait until that token is returned with a payload.\n\n\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fguides\u002Frefactoring-serverless\u002Fassets\u002Fimages\u002Freplace_polling_refactored.png\"\u002F>\n\nSee the CDK implementation of this pattern in Typescript on [GitHub](https:\u002F\u002Fgithub.com\u002Faws-samples\u002Faws-refactoring-to-serverless\u002Fblob\u002Fmain\u002Fimplementation\u002Freplace-polling-with-callback\u002FREADME.md)\n\n## Considerations \n\n#### Advantages\n* The Step function state machine workflow waits until the callback token is received. This abandons the need for a polling machanism and reduces the number of function integrations. \n\n#### Applicability\n\n* The Wait for a Callback with the Task Token Integration Pattern is available for [supported services only](https:\u002F\u002Fdocs.aws.amazon.com\u002Fstep-functions\u002Flatest\u002Fdg\u002Fconnect-supported-services.html). \n\n## Related Refactorings\n- [Extract Send Message](.\u002Fextract_send_message)\n",[9,10,11],"content\u002Fcontributors\u002Fgregor-hohpe.json","content\u002Fcontributors\u002Fsindhu-pillai.json","content\u002Fcontributors\u002Fbhuvan-annamreddi.json","LIST","Refactoring to Serverless","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Freplace_polling_with_callback","1 min",[17,42],{"title":18,"content":19},"Introduction",[20],{"title":13,"order":21,"callout":22,"resources":26,"time":38,"path":39,"id":40,"link":41},1,{"title":23,"description":24,"link":25},"Watch the video","This session shows how you can refactor an existing serverless application to fully utilize AWS managed services and make service dependencies explicit, resulting in cleaner and more robust code.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=F7wxgWaccHs",[27,31,34],{"link":28,"text":29,"type":30},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ttJAIQf7cTw","Building modern cloud applications? Think integration!","video",{"link":32,"text":33,"type":30},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Ud9h1hJgoKk","Modern cloud applications - do they lock you in?",{"link":35,"text":36,"type":37},"https:\u002F\u002Fcdkpatterns.com\u002Fpatterns\u002F","CDK Patterns Collection","website","3 min","introduction","introduction.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fintroduction",{"title":43,"content":44},"Refactorings",[45,51,56,61,66,69,74],{"title":46,"time":47,"path":48,"id":49,"link":50},"Extract Send Message","2 min","extract_send_message","extract_send_message.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fextract_send_message",{"title":52,"time":47,"path":53,"id":54,"link":55},"Extract function invocation","extract_function_invocation","extract_function_invocation.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fextract_function_invocation",{"title":57,"time":47,"path":58,"id":59,"link":60},"Replace Lambda with Service Integration","service_integration","service_integration.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fservice_integration",{"title":62,"time":15,"path":63,"id":64,"link":65},"Direct database access","direct_database_access","direct_database_access.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fdirect_database_access",{"title":6,"time":15,"path":67,"id":68,"link":14},"replace_polling_with_callback","replace_polling_with_callback.md",{"title":70,"time":47,"path":71,"id":72,"link":73},"Send Message via Pipes","send_message_via_pipes","send_message_via_pipes.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fsend_message_via_pipes",{"title":75,"authors":76,"time":38,"path":78,"id":79,"link":80},"Convert Choreography to Orchestration",[77],"Bhuvan Annamreddi","choreography-to-orchestration","choreography-to-orchestration.md","\u002Fcontent\u002Fguides\u002Frefactoring-serverless\u002Fchoreography-to-orchestration",1792665265057]