1

js/快递。我正在做的是从另一台服务器向快递服务器发送一个请求,其中包含一些用户详细信息。

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

正常res.send()在这里不起作用,因为在我们将请求参数添加到队列并处理之后,请求和响应之间没有链接。这是我的代码示例。

应用程序.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 回答