2

App Engine/Java の Deferred バックエンドから Deferred フロントエンド タスクを開始することは可能ですか。遅延タスクは、次のようなコードで特定のホストを使用してバックエンドで開始されます。

queue.add(withPayload(new MyDeferredTask()).header("Host",
    BackendServiceFactory.getBackendService().getBackendAddress("backend1", 1));

そして、これはうまくいきます。Deferred タスクがこのバックエンドから開始された場合、タスクはバックエンドでも実行されます。使用する特定のホスト、またはフロントエンドで Deferred タスクを明示的に開始する別の手段はありますか?

アップデート

元の質問で重要な情報を少し見逃していました。ペイロードが渡される Deferred Tasks について話しているのです。バックエンドから Deferred タスクを開始すると、同じバックエンドで新しい Deferred タスクが開始されます。私が知りたいのは、バックエンドから開始されたときに、フロントエンドで Deferred タスクを明示的に開始できるかどうかです。上記の元の質問は、これを反映するように変更されています。

4

2 に答える 2

1

私の古い質問に答えるには、特に遅延タスクについて - バックエンドで実行されているタスクがあり、フロントエンドでタスクを開始したい場合は、フロントエンド インスタンスのホスト、つまり myapp.appspot.com を明示的に指定する必要があります。ホストを指定しない場合、タスクは開始コードと同じインスタンスで実行されます。

フロントエンドで明示的に開始するには、呼び出し元が実行されているインスタンスに関係なく、次のようにします。

Queue queue = QueueFactory.getQueue("my-queue");
TaskOptions taskOptions = TaskOptions.Builder.withPayload(new MyDeferredTask());
taskOptions.header("Host", "myappid.appspot.com");
queue.add(taskOptions);
于 2014-04-17T12:57:39.687 に答える
0

URLフロントエンドのを「実行したいサーブレット」と呼ぶURL-fetch serviceか、サーブレットのURLを使用して1つのキューにタスクを追加するだけです。

フロントエンドは、アプリケーションへのすべてのHTTP呼び出しを処理し、web.xmlファイルで構成されたサーブレットに送信するだけです。

于 2012-10-14T10:02:03.223 に答える