首页 文章

基于SQS消息触发SWF工作流

提问于
浏览
5

Preamble: 我喜欢使用亚马逊's SWF and SQS to accomplish my goals. There may be other services that will better match what I' m尝试做,所以如果你有建议请随意把它们扔出去 .

Problem: 最基本的需求是客户端(移动设备,Web服务器等)发布将异步处理而不响应客户端的消息 - 非常基本 .

预期的实现是客户端将消息发布到预定的SQS队列 . 此时,客户端已完成 . 我们还有一个定义的SWF工作流程负责从队列中拾取消息,并且(在一些操作之后)将它放在Dynamo DB中 - 再次,所有这些都非常简单 .

我能够阅读工作流程并不是一个无限期的过程 . 它有一个开始,一个中间和一个结尾 . 根据SWF文档,工作流程可以运行不超过一年(Setting Timeout Values in SWF) .

所以,我的问题是:如果我假设工作流代表一个消息处理流程,那么每当消息发布到SQS时,如何启动工作流程?

Caveat: 我想避免为单个Web服务设置服务器,然后我必须根据正在处理的消息数量来管理/扩展 . 我不得不担心的原因 .

先感谢您 .

2 回答

  • 6

    我将创建一个侦听SQS队列的工作进程 . 收到消息后,它会调用SWF API来启动工作流程执行 . 应基于消息内容生成工作流执行ID,以确保重复的消息不会导致重复的工作流 .

  • 2

    您可以将AWS Lambda用于此目的 . SQS事件将调用lambda函数,因此您不必显式编写队列轮询器 . 然后lambda函数可以向SWF发出post请求以启动工作流

相关问题