1

これは、支払い処理に固有の別の質問に関連しており、これが私の使用例ですが、beanstalkdを使用してnode.jsとrubyを同じサーバーに統合することを検討していました。基本的にはnode.jsをメインのWebサーバーとして使用したいのですが、支払い処理が必要な場合は、rubyのような堅牢で安定したものを使用したいと思います。

私は、node.jsにrubyの支払い処理ジョブをキューに入れてバックグラウンドで実行させる方法としてbeanstalkdを使用することを検討していました。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 の上に構築されたアクター ライブラリが既に存在するので、ノードと Ruby の間で大まかなアクター スタイルのセマンティクス、または少なくともコールバックのセマンティクスを使用して対話できる単純なものを作成できるはずです。

于 2011-02-08T13:50:26.917 に答える