我是 ActionHero 的新手,我需要在队列中添加一些内容,等到完成并取回数据,然后在响应客户端之前继续处理另一个队列中的项目。看起来像这样:
- API 客户端点击 /foo
- foo 动作调用 bar 动作并等待......
- 当 bar 完成时,它返回一个值
123abc
123abc
然后再次传递给需要它的任务的队列
值得注意的是,我知道这不是最佳的,但这涉及 3 台服务器。/foo 访问我的 Node ActionHero 服务器,123abc
来自 Java 服务器(将其视为身份验证服务),然后我的 Node ActionHero 服务器将发送它以供 .NET 服务器接收。
我现在用任务设置它的方式确实命中了 Java 服务器,Java 服务器注销了我需要的值,但在下面的代码中它是一个空对象
ACTION 中的 run():
api.actions.enqueue('MyJavaServerTask', {...}, function(error, toRun){
console.log(arguments) // <-- returns { '0': null, '1': true }
data.response.success = true
api.queue.push(data, next)
})
任务:
exports.task = {
name: 'MyJavaServerTask',
description: 'My Java Server Task',
frequency: 0,
queue: 'default',
run: function (api, params, next) {
var job = {
response: {},
connection: {id: 'none'},
authorization: params.authorization,
params: {
apiVersion: '1',
action: 'MyJavaServerTask',
...
}
}
api.queue.push(job, function() {
console.log(arguments) // <-- returns {}
next()
})
}
}
不过,在 Java 服务器上,我确实看到了请求并且它是成功的,它返回了正确的 JSON。日志看起来像
15:19:22.542 [run-main-0] INFO application - apiq read: {"id":"none","params":{"apiVersion":"1","action":"MyJavaServerTask"}}
generating tables and key
15:19:22.543 [run-main-0] INFO application - result: {"key":"..."}
那么......我如何key
从那里得到它以用于附加到下一个排队的项目?