接口 StateRouter<T>
-
- 所有已知实现类:
AbstractStateRouter,AppStateRouter,ConditionStateRouter,ListenableStateRouter,MeshRuleRouter,MockInvokersSelector,ScriptStateRouter,ServiceStateRouter,StandardMeshRuleRouter,TagStateRouter,TailStateRouter
public interface StateRouter<T>State Router. (SPI, Prototype, ThreadSafe)Routing It is recommended to implement StateRouter by extending
AbstractStateRouter- 从以下版本开始:
- 3.0
- 另请参阅:
Cluster.join(Directory, boolean),AbstractStateRouter,Directory.list(Invocation)
-
-
方法概要
所有方法 实例方法 抽象方法 默认方法 修饰符和类型 方法 说明 StringbuildSnapshot()Build Router's Current State Snapshot for QoSorg.apache.dubbo.common.URLgetUrl()Get the router url.booleanisForce()To decide whether this router should take effect when none of the invoker can match the router rule, which means theroute(BitList, URL, Invocation, boolean, Holder)would be empty.booleanisRuntime()To decide whether this router need to execute every time an RPC comes or should only execute when addresses or rule change.voidnotify(BitList<Invoker<T>> invokers)Notify the router the invoker list.BitList<Invoker<T>>route(BitList<Invoker<T>> invokers, org.apache.dubbo.common.URL url, Invocation invocation, boolean needToPrintMessage, org.apache.dubbo.common.utils.Holder<RouterSnapshotNode<T>> nodeHolder)Filter invokers with current routing rule and only return the invokers that comply with the rule.voidsetNextRouter(StateRouter<T> nextRouter)Notify next router node to current router.default voidstop()
-
-
-
方法详细资料
-
getUrl
org.apache.dubbo.common.URL getUrl()
Get the router url.- 返回:
- url
-
route
BitList<Invoker<T>> route(BitList<Invoker<T>> invokers, org.apache.dubbo.common.URL url, Invocation invocation, boolean needToPrintMessage, org.apache.dubbo.common.utils.Holder<RouterSnapshotNode<T>> nodeHolder) throws RpcException
Filter invokers with current routing rule and only return the invokers that comply with the rule. Caching address lists in BitMap mode improves routing performance.- 参数:
invokers- invoker bit listurl- refer urlinvocation- invocationneedToPrintMessage- whether to print router state. Such as `use router branch a`.- 返回:
- state with route result
- 抛出:
RpcException- 从以下版本开始:
- 3.0
-
isRuntime
boolean isRuntime()
To decide whether this router need to execute every time an RPC comes or should only execute when addresses or rule change.- 返回:
- true if the router need to execute every time.
-
isForce
boolean isForce()
To decide whether this router should take effect when none of the invoker can match the router rule, which means theroute(BitList, URL, Invocation, boolean, Holder)would be empty. Most of time, most router implementation would default this value to false.- 返回:
- true to execute if none of invokers matches the current router
-
notify
void notify(BitList<Invoker<T>> invokers)
Notify the router the invoker list. Invoker list may change from time to time. This method gives the router a chance to prepare beforeroute(BitList, URL, Invocation, boolean, Holder)gets called. No need to notify next node.- 参数:
invokers- invoker list
-
buildSnapshot
String buildSnapshot()
Build Router's Current State Snapshot for QoS- 返回:
- Current State
-
stop
default void stop()
-
setNextRouter
void setNextRouter(StateRouter<T> nextRouter)
Notify next router node to current router.- 参数:
nextRouter- next router node
-
-