呼び出しコンテキストは、呼び出しプロパティと、インタフェース固有のパラメータ以外の送信されたカスタムデータとを含む。 呼び出しプロパティには、IPアドレス、呼び出しを開始するアプリケーションの名前、およびタイムアウト期間が含まれます。
進行中の呼び出しコンテキストを指定して取得する
com.taobao.hsf.util.RequestCtxUtilは、呼び出しコンテキストを指定して取得する静的メソッドを提供します。 ThreadLocalに基づいて、getxxxはThreadLocal変数からxxxプロパティを削除します。 このメソッドは、現在のスレッドの単一の呼び出しに対してのみ有効です。
次の表に、特定のプロパティの指定と取得に使用されるメソッドを示します。
- 消費者
移動方法 説明 setRequestTimeout() 1回の呼び出しのタイムアウト期間を指定します。 setUserId() 現在の呼び出しのユニットサービスのユーザーIDを指定します。 このメソッドは、ジェネリック呼び出しに必要です。 getProviderIp() 最新に呼び出されたプロバイダのIPアドレスを取得します。 setTargetServerIp(String ip) 現在のスレッドの次の呼び出しで必要なプロバイダーのIPアドレスを指定します。 このIPアドレスは、メモリ提供サービスのIPアドレスリストに含める必要があります。 setDirectTargetServerIp (文字列targetIp) 現在のスレッドの次の呼び出しにおけるプロバイダーのIPアドレスを指定します。 このメソッドは、レジストリをバイパスし、メモリ内のIPアドレスリストを無視します。 - プロバイダー
移動方法 説明 getClientIp() 呼び出し元のIPアドレスを取得します。 getAppNameOfClient() 呼び出し元が使用するアプリケーションの名前を取得します。 isHttpRequest() 呼び出しがHTTP呼び出しかどうかを指定します。 getHttpHeader (文字列キー) HTTPリクエストのヘッダープロパティを取得します。
カスタム要求コンテキストを送信する
RpcContextは、インターフェイスを変更せずにプロバイダに追加データを送信するメソッドを提供します。 パラメーターの型は、カスタムドメインオブジェクト (DO) 型または基本型です。 ピアエンドが同じタイプのパラメーターをシリアル化できることを確認します。
- コンシューマーが呼び出しを開始する前にコンテキストを指定します。
// rpc呼び出し前のセットアップコンテキスト RPCContext rpcContext = RPCContext.getClientContext(); rpcContext.putAttachment("tetantId" 、"123"); // これはRPC呼び出しです。 呼コンテキストはまた、ピア端に送信される。 orderService.queryOrder(1L); - プロバイダーのメソッドを使用してコンテキストを取得します。
// コンテキストデータの取得 RPCContext rpcContext = RPCContext.getServerContext(); String myContext = (String)rpcContext.getAttachment("tetantId");