2

既存のアプリケーションを Play フレームワークに移植しようとしています。アプリケーションは、ライブラリを使用して SMPP 送信を行います。SMPP 送信は、メッセージが非同期で送信されるように (送信が成功したときにリスナー オブジェクトを呼び出す別のスレッドで) 既に実装されています。同じライブラリを使用して、リスナーが更新されたときに Play の Web リクエストに結果を返す Promise オブジェクトを返す方法を考えています。

私が見たすべての例は、別のスレッドで作業を行う play WS ライブラリまたは akka を使用してそれがどのように行われるかを示しています。上記で説明したように、これを行う実装が既にある場合、どうすればそれを Play に統合できますか?

4

1 に答える 1

2

SMPP 送信ライブラリは、完了リスナーを登録できるハンドルを返しますよね? その場合、次のようなブリッジを作成できるはずです。

val p = scala.concurrent.Promise[ResultType]()
val handle = smpp.doit() // or whatever the method is called
handle.onComplete(h => p.success(h.result)) // or p.complete if things can fail
return p.future

次に、結果の Future を使用して Async Play アクションを完了できます。

于 2013-04-06T11:20:39.280 に答える