2016-06-12 7 views
1

RoutingContext.fail(int)に渡されるステータスコードは、どのように失敗ハンドラ(Route.failureHandlerを使用して登録)で取得できますか?Vertx:障害ハンドラでfail()ステータスコードを取得する方法は?

など。一部のルートの処理に時間がかかりすぎる場合は、によって中断され、fail(408)RoutingContextにコールされます。 failメソッドは、(登録されていれば)失敗ハンドラを呼び出します。しかし、私はそれが呼ばれた理由ハンドラ自体に見つける方法(実装に依存する反射&を除く)どのような方法を見つけることができません。null

  • ステータスコードが唯一のプライベートに設定されているように見える

    • RoutingContext.failure()リターンRoutingContextImplの分野、その特定のシナリオのためのユニットテストがあるので、まだHttpServerResponse
  • 答えて

    2

    にあなたがエラーコードを見ることができるはずはない。

    router.route(path).handler(rc -> { 
        rc.fail(400); 
    }).failureHandler(frc -> { 
        assertEquals(400, frc.statusCode()); 
        frc.response().setStatusCode(400).setStatusMessage("oh dear").end(); 
    }); 
    

    ハンドラーを登録していますか?障害ハンドラとは?

    +0

    。 – czerny

    +0

    テストによると、これはうまくいくはずです。完成のためにどのバージョンを使用していますか? 3.3.0は数日後に出ることに注意してください –

    +0

    私は3.2.1を使用しています。 – czerny

    1

    ない古いVert.xのバージョンが、3.0.0からのアップわから:まさにあなたの例のように、 `Route.handler()`と `Route.failureHandlerを()`使用

    eventBus.send("some.address", "some value", event -> { 
        if (event.succeeded()) { 
        System.out.println("Received reply: " + event.result().body()); 
        } else { 
        ReplyException cause = (ReplyException) event.cause(); 
        String failMessage = cause.getMessage(); 
        int failCode = cause.failureCode(); 
        } 
    }); 
    
    関連する問題