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

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

有一个新的要求:而不是现在发送电子邮件,我需要创build电子邮件的HTML,并将其发回给请求者。

如果我没有使用工作队列,我可以使用res.send()。 但现在我不能。

我想过将我的res对象保存到作业队列,然后尝试使用该响应对象将响应发回给同一个用户。

有什么解决scheme,我可以在这样的情况下使用?

任何帮助是极大的赞赏 :)

您可以使用特定于工作的事件 :

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