AwsFlowFramework のサンプル、特にhelloworldとfileprocessingを使用しています。ここに記載されているすべてのセットアップ手順に従いました。すべてのクライアント クラスは、アスペクト ウィーバーで正常に作成されます。すべてコンパイルして実行します。
しかし、非同期メソッド内で Promise を実行しようとしてもうまく.get
いきません。永遠に待機し、結果は返されません。
私は何を間違っていますか?
.get
特に、helloworld サンプルには非同期メソッドがなく、Promise での実行も試行されません。したがって、完全にコピーすると機能し、アクティビティ クライアントで「hello world」メッセージが出力されていることがわかります。get
しかし、 Promise<Void>
返されたで呼び出すスタブ非同期メソッドを作成するprintHello
と、アクティビティのクライアントが呼び出されないため、ワークフローは永久に待機します。実際、返された promise を変数に設定すると、この例は機能します。.get
問題は、Promiseを呼び出そうとした場合にのみ発生します。非同期メソッドを持つファイル処理の例は機能しません。
AWS コンソールに登録されているワークフローとアクティビティ タイプが表示されます。
Java SDK 1.4.1 と Eclipse Juno を使用しています。
失敗した試行のリスト:
- アスペクトウィーバーが別のことをする場合に備えて、Eclipse Indigoで試してみました。
- この質問で提案されているように、すべての非同期メソッドをプライベートにしました。
.isReady()
Promise を呼び出すと、「helloworld」メッセージが表示された後に呼び出す場合でも、これは常に行わfalse
れます (その間にスリープすることで確認されます)。Promise.get
これにより、呼び出し元がブロックされるまでブロックされると思いますPromise.isReady
がtrue
、どういうわけかこれが真実ではないため、クライアントは呼び出されず、ワークフローは永遠に待機します。- 別のエンドポイントを試しました。