私は ActionHero を初めて使用し、キューに何かを追加する必要があります。それが完了するまで待ってからデータを取得し、クライアントに応答する前に別のキューに入れられたアイテムに進みます。次のようになります。
- API クライアントが /foo にヒット
- foo アクションは bar アクションを呼び出して待機します...
- bar が終了すると、次の値を返します
123abc
123abc
その後、それを必要とするタスクのために再びキューに渡されます
ここで注目に値するのは、これが最適ではないことは理解していますが、これには 3 台のサーバーが関係しています。/foo が Node ActionHero サーバーにヒット123abc
し、Java サーバー (認証サービスと考えてください) から送信され、Node ActionHero サーバーがこれを送信して .NET サーバーが取得します。
タスクを使用して今セットアップした方法は、Java サーバーにヒットし、Java サーバーは必要な値をログアウトしますが、以下のコードでは空のオブジェクトです
アクションの 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
そこからそれを取得して、次のキューに入れられたアイテムに追加するために使用するにはどうすればよいですか?