使用作业队列(kue / node / express)时将响应发送回请求者

时间:2016-01-18 06:17:17

标签: javascript node.js email express kue

js / express。我正在做的是发送一个请求来表达来自不同服务器的服务器以及一些用户详细信息。

将请求详细信息添加到作业队列(kue),然后使用工作人员(群集)i处理作业并向用户发送电子邮件。我想将响应发送回服务器,该服务器将请求发送到我的快递服务器。

正常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对象保存到作业队列,然后最近尝试使用该响应对象将响应发送回同一用户。

我可以在这样的情况下使用任何解决方案吗?

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:2)

您可以使用job-specific events

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.
   });

});