1

这与另一个特定于支付处理的问题有关,这是我的示例用例,但我正在考虑尝试使用 beanstalkd 在同一台服务器上集成 node.js 和 ruby​​。基本上,我想使用 node.js 作为我的主要 Web 服务器,但是当我需要进行一些支付处理时,我想使用像 ruby​​ 这样强大而稳定的东西。

我正在考虑尝试使用 beanstalkd 作为让 node.js 排队支付处理作业以便 ruby​​ 在后台执行的一种方式。beanstalkd 的文档有点少,所以我很难确定这是否是一个好方法,或者我将如何去做。据我所知,启动 beanstalkd 进程然后让 node.js 连接到它以向它发送作业,并有一个可以执行作业并发回结果的 ruby​​ 脚本应该是相当简单的。

4

2 回答 2

3

Beanstalk 适合此任务。确保使用 binlog 选项使作业在 beanstalkd 重新启动之间保持不变。

您的 node.js 进程将使用一个管道(称为“付款”)并将作业放入其中,并具有适当的优先级。

然后,您的 Ruby 脚本可以查看支付管并处理工作。

确保为作业提供足够的 TTL - 您希望确保在 beanstalk 假定作业失败并重新排队之前支付处理有时间完成。

只是好奇-您将如何向客户提供付款成功的反馈?也许 Ruby 脚本会更新数据库中的记录?

于 2011-02-08T10:40:30.093 回答
0

因此,在充分了解之后,我确实找到了评估 beanstalkd 真正需要的文档。源代码中有一个协议文档未链接到我一直在阅读的任何内容或主页(尽管它位于名为 doc 的文件夹中),它提供了有关其功能和限制的更好的详细信息。

作为一个异步工作队列似乎非常好,非常适合node.js,并且非常适合与一些Ruby代码进行通信以进行支付处理,但是正如dkam所说,我如何将响应返回给节点.js 以便能够更新客户端。虽然我认为这对许多任务都有意义,但对我来说还不够。

鉴于 alfred 的建议,我研究了 redis,虽然它并不是我开箱即用的需要,但我认为它就足够了。已经有一个为 Ruby 构建在 redis 之上的actor 库,所以我认为我应该能够制作一些简单的东西,可以在 node 和 Ruby 之间使用大致的 actor 样式语义,或者至少是回调语义。

于 2011-02-08T13:50:26.917 回答