如何并行调用同一状态机?

问题描述 投票:0回答:2

我有一个状态机,它使用事件根据 S3 存储桶上的文件触发。如果 2 个文件相继出现,则状态机的两次执行开始运行。我不要那个。我可以在状态机中执行某些操作来确保当状态机实例运行时,第二个调用继续等待,直到第一个调用完成,而不是使用队列吗?

状态机配置内的解决方案

amazon-web-services state state-machine aws-step-functions
2个回答
0
投票

然后状态机必须在内部将调用存储在队列中,同时等待当前调用完成。据我所知,AWS Step Functions 不为您提供该功能。

Amazon 发布了一篇关于使用锁定来阻止并发状态机调用实际执行任何操作的博客文章,直到它们可以获得锁。这实际上允许您一次仅运行一个状态机调用,而 Step Functions 基本上会“存储”该调用,直到它可以运行为止。

但是我认为这不会提供任何排序。我认为如果多个调用正在等待锁,一旦锁被释放,下一个运行将是完全随机的。队列似乎是专门为解决您要解决的实际问题而构建的,因此我强烈建议考虑使用队列。


0
投票

此逻辑由 https://www.websemaphore.com 提供开箱即用。您可以动态[重新]配置并发限制,甚至可以转换事件消息。如果您已经在考虑事件驱动的架构术语,那就更容易了。 [披露:我是作者]

© www.soinside.com 2019 - 2024. All rights reserved.