1

js/エクスプレス . 私がやっていることは、いくつかのユーザーの詳細を含む別のサーバーから Express サーバーにリクエストを送信することです。

リクエストの詳細をジョブ キュー (kue) に追加し、ワーカー (クラスター) を使用してジョブを処理し、ユーザーにメールを送信します。そして、リクエストをエクスプレスサーバーに送信するサーバーに応答を送り返したいです。

res.send()リクエストパラメータをキューに追加して処理した後、リクエストとレスポンスの間にリンクがないため、ここでは通常は機能しません。これが私のコードのサンプルです。

app.js

app.get('/my_request/:param1/:param2/:param3',
    function( req, res ) {

        req.params.type = "ORDER_COMPLETE";
        var params = req.params;

        jobs.create('jobQueue', { 'title': "order_receipt", 'params' : params } )
            .ttl( 30 * 1000 ) //value in ms // 30 min
            .removeOnComplete( true )
            .save(function(err) {
                if (err) {
                    console.log('jobs.create.err', err);
                } 
        });

        //res.send( JSON.stringify( {"success" : true} ) ).end();

    }

);

新しい要件があります。 メールを送信する代わりに、メール HTML を作成してリクエスタに送り返す必要があります。

ジョブ キューを使用しなかった場合は、 res.send() を使用できます。でも今はできません。

オブジェクトをジョブ キューに保存することを考えresた後、最近、その応答オブジェクトを使用して同じユーザーに応答を返そうとしました。

このような状況で使用できる解決策はありますか?

どんな助けでも大歓迎です:)

4

1 に答える 1

2

ジョブ固有のイベントを使用できます:

app.get('/my_request/:param1/:param2/:param3',
function( req, res ) {

    req.params.type = "ORDER_COMPLETE";
    var params = req.params;

    var job = jobs.create('jobQueue', { 'title': "order_receipt", 'params' : params } )
        .ttl( 30 * 1000 ) //value in ms // 30 s
        .removeOnComplete( true )
        .save(function(err) {
            if (err) {
                console.log('jobs.create.err', err);
            } 
        });

    //res.send( JSON.stringify( {"success" : true} ) ).end();
   job.on('complete', function(result){
     res.send(result); // This is just an example. You can use JSON here as well.
   });

});
于 2016-01-18T21:13:08.490 に答える