問題タブ [vertx-httpclient]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Quarkus Mutiny Web Client で JSON を安全にデコードする
私は Quarkus に取り掛かり、Mutiny Vertx WebClient を利用しようとしています。私のコードは機能しますが、HttpResponse で bodyAsJson メソッドを使用して現在コードを記述している方法である、安全でない/チェックされていない割り当てに依存する必要はありません。Mutiny Vertx クライアントから JSON をデコードするためのより良い方法、またはより標準的な方法はありますか? bodyAsJsonObject を呼び出してそれを返すことができることはわかっていますが、API 呼び出しから返されたデータを処理する必要があるため、データの形状/構造を表すクラスにデコードする必要があります。
vert.x - HTTP リクエストごとに新しい Verticle をデプロイしますか?
現在、アプリケーションの起動時に、単一の verticle をデプロイして を呼び出してcreateHttpServer(serverOptions)
います。
閉じた接続イベントを処理するために をセットアップしました。これrequest().connection().closeHandler
は主に、クライアントがリクエストをキャンセルすることを決定したときに、そのリクエストの実行を停止するためです。
ただし、同じ verticle でそのハンドラーを設定すると、closeHandler
同期コードの実行が終了してからコードを実行するように見え、データベースが Future および非同期ハンドラーを介して応答するのを待っています。
その代わりに、新しい HTTP リクエストごとにワーカー バーティクルをデプロイすると、実行が適切に中断されてcloseHandler
コードが実行されます。
私が理解しているように、HttpServer は、新しいバーティクルを展開しなくても一度に多くのリクエストを処理できるため、リクエストのスケーラビリティを独自に処理することになっています。基本的に、これは、アプリケーションが本格的に稼働すると、スレッドの負荷やその性質に影響を与えるハックな回避策のように思えます。だから私の質問は:
これはこれを行う正しい方法ですか?
そうでない場合、従うべき正しい方法またはパラダイムは何ですか?
頂点の実行をそれ自体の頂点とその内部からキャンセルするにはどうすればよいですcloseHandler
か? 実行をキャンセルするということは、完了を待っているすべての Future を含めることを意味します。
この複数バーティクル アプローチを実行するときに、closeHandler が非同期でしか実行されないのはなぜですか? 通常の方法を使用し、割り当てられたスレッド プールを使用して単純にリクエストを実行すると、イベント ループがそのキューを終了するまで closeHandler の実行が延期されます。これを非同期で行う必要があります。
java - Vertx WebClient の応答が遅い
私は vertx と RxJava が初めてです。簡単なテストプログラムを実装しようとしています。ただし、このプログラムのダイナミクスを理解することはできません。一部のリクエストの応答に 10 秒以上かかるのはなぜですか?
以下は私のサンプルテストアプリケーションです
私が知りたいのは、何が私の応答時間を遅くしているのかということです。
vert.x - Vert.x 3.9 WebClient のタイムアウトが期待どおりに機能しない
ダウンストリーム バックエンド コールでリクエスト タイムアウトを設定する必要があります。しかし、Vert.x 3.9 の WebClient クラスは期待どおりに動作しないようです。そのためのテストコードを次に示します。
テストのために、同じホストで次の Go サーバーを実行しています。
私のテスト サーバーの出力は、WebClient が 5 つの同時接続を開き、すべての要求がタイムアウトによって停止されることを示しています。ここで何が間違っていますか?リクエストに接続タイムアウトを設定するにはどうすればよいですか? クライアントからの出力は次のとおりです。
「成功!」だけが表示されると思います。これは、同じホストで実行されている Go サーバーが 50 ミリ秒以内に適切に応答するためです。
編集: vertx.close() を削除し、元の質問を明確にしました...実際には元のテスト コードに vertx.close() はありませんでしたが、SO 投稿を編集するときに追加したので、それを実行している人は必要ありません。 CTRL-C を押します。
amazon-web-services - VertX HttpClient を使用して AWS WebSocket にアクセスする
AWS で Web Socket を使用して API Gateway を作成しました。VertX が提供する HttpClient を使用して接続したいと考えています。クライアントバーティクルに次のコードを使用しています。
ローカルホストで実行されている VertX サーバーでテストしているときに同じコードが機能するため、正しい WebSocketConnectionOptions の問題であると想定します。
HttpClient バーティクルを使用して AWS ソケットに接続しようとすると、「接続が拒否されました」というエラーが発生します。wscat を使用して接続すると、問題なく動作します。
どうもありがとうございました。