我正在设计一个 Rails 应用程序,它接收请求,使用请求中的数据来调用第 3 方 Web 服务,处理回复,然后向原始请求者发送响应,并向另一个服务发出 PUT 请求。
我正在努力思考如何设计这个 Rails 应用程序,因为它与规范的 Rails 结构不同。
对象是列表和任务。每个List都有很多Task,每个Task都属于一个List。
我会得到的请求是这样的:
http://myrailsapp.heroku.com/v1/lists?id=1&from=2012-02-12&to=2012-02-14&priority=high
在此示例中,我请求从 2012 年 2 月 12 日到 2012 年 2 月 14 日的任务,在列表 #1 中具有高优先级
然后我会发出这样的第 3 方 Web 服务调用:
http://thirdpartywebservice.com/v1/lists?id=4128&from=2012-02-12&to=2012-02-14&priority=high 如您所见,对数据进行了一些处理(在这种情况下,id 已更改)
然后将结果发送回请求者并通过 PUT 发送到另一个 Web 服务。
我的问题是,如何设置 Rails 应用程序来处理这些类型的行为?控制器结构如何变化?这看起来像是队列的一个很好的用例,我如何在队列之间分配多个并发请求?
一方面我不需要数据持久性(数据可以在响应发出后丢弃),并且数据结构设计也得到了简化。(我认为我不需要 ruby 对象,只是表示这些对象的字典或哈希值会更轻,实现起来也更快)
编辑
所以我将应用程序的工作流程分解为这些组件
- 解析传入请求
- 构建第 3 部分 Web 服务请求
- 发送第 3 方请求
- 将工作人员排入队列以处理预期的响应
- 响应到达后处理
- 将解析结果作为响应发回
哪个标准 ruby 控制器处理这些步骤中的每一个?除了 Lists 和 Tasks 还需要哪些模型?