GS2-JobQueue

ジョブキューを GS2 SDK for Unity から利用する手順を解説します。

ジョブキューを作成する

GS2マネージメントコンソールの GS2-JobQueue から新しくジョブキューを作成します。

1つのジョブキューでユーザ毎に異なるキュー空間を提供しますので、ユーザ毎にジョブキューを作成するような必要はありません。

../../../_images/スクリーンショット_2018-02-21_15.41.42.png

『ジョブキューの新規作成』をクリックします。

../../../_images/スクリーンショット_2018-02-21_15.41.55.png

ジョブキューの名前などを指定します。

GS2-JobQueue では、あたらしいジョブが登録されたときに通知を受けることが出来ます。

通知を受ける方法は特定のURLに通知をうける WebHook と GS2-InGamePushNotification を使用した通知があります。

これで、GS2マネージメントコンソールでおこなう準備は完了です。

ジョブを登録する

ジョブの登録は Unity 上のプログラムからは実行出来ません。

ここでは GS2-Script の中からジョブを登録する例を示します。

このスクリプトを GS2-Account のアカウント作成時に実行するように設定したとしましょう。

script-0001 / script-0002 はアカウントの初期設定を行うためのスクリプトだと想像してください。

job_queue_client = client('job_queue')        –- GS2-JobQueue のクライアントを初期化
result = job_queue_client.push({
    queueName="queue-0001", -- ジョブキュー名
    userId="user-0001", -- ジョブを登録するユーザID
    jobs={
        {
            scriptName="script-0001", -- ジョブで実行するGS2-Script名
            args="{\"param1\": \"test\", \"param2\": 2}", -- GS2-Script に渡す引数
            maxRetry=5 -- 最大リトライ回数
        },
        {
            scriptName="script-0002", -- ジョブで実行するGS2-Script名
            args="{\"param\": \"aaa\"}", -- GS2-Script に渡す引数
            maxRetry=3 -- 最大リトライ回数
        }
    }
})
result = {permit=not result.isError} -- ジョブの登録に失敗した場合失敗とする

ジョブを実行する

ジョブの実行は Unity 上で実行します。

yield return Gs2.JobQueue.Run(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
        Debug.Log("statusCode: " + r.Result.StatusCode); // ステータスコード(200が成功 - httpステータスコードに準拠)
        Debug.Log("result: " + r.Result.Result);         // ジョブが実行したスクリプトの戻り値
        Debug.Log("endOfJob: " + r.Result.EndOfJob);     // キューの終端までジョブを実行したか
    },
    Session,  // ゲームセッション
    QueueName // ジョブキュー名
);

ジョブの登録を GS2-InGamePushNotification を使って待ち受ける

ジョブが登録されたときに通知を受けたい場合は GS2-InGamePushNotificartion を使用することで実現出来ます。

通知を受けるためには、まずは GS2-InGamePushNotification のセッション情報を GS2-JobQueue に渡す必要があります。

Gs2.JobQueue.SetInGamePushNotificationSession(session);

次に、通知を受けるイベントハンドラを登録します。

Gs2.JobQueue.OnEntryJob += (notification) =>
{
    Debug.Log("queueName: " + notification.QueueName);
};

これで、ジョブが登録されたユーザに対してプッシュ通知を出して、どのキューにジョブが登録されたかを伝えることが出来ます。