Ext
- 扩展点Identity
- 业务身份public abstract class BaseRouter<Ext extends IDomainExtension,Identity extends IIdentity> extends Object implements IDomainService
BaseRouter
是最小粒度的IDomainService
,只负责一个扩展点的编排
构造器和说明 |
---|
BaseRouter() |
限定符和类型 | 方法和说明 |
---|---|
abstract Ext |
defaultExtension(Identity identity)
默认扩展点实现.
|
protected Ext |
firstExtension(Identity identity)
找到第一个符合条件的扩展点实例.
|
protected Ext |
firstExtension(Identity identity,
int timeoutInMs)
找到第一个符合条件的扩展点实例,并指定扩展点最大执行时长,超时抛出
TimeoutException . |
protected Ext |
forEachExtension(Identity identity)
不关心扩展点返回值,逐一执行所有符合业务身份的扩展点.
|
protected <R> Ext |
forEachExtension(Identity identity,
@NonNull IReducer<R> reducer)
遍历满足条件的所有扩展点实例.
|
protected Ext forEachExtension(@NonNull Identity identity)
identity
- 业务身份protected <R> Ext forEachExtension(@NonNull Identity identity, @NonNull @NonNull IReducer<R> reducer)
通过IReducer
控制何时退出遍历.
R
- 扩展点方法的返回值类型identity
- 业务身份reducer
- 收敛逻辑protected Ext firstExtension(@NonNull Identity identity)
这表示:扩展点实例之间是互斥的,无法叠加的
如果需要根据扩展点执行结果来找第一个匹配的扩展点实例,请使用#forEachExtension(Identity, IReducer)
identity
- 业务身份protected Ext firstExtension(@NonNull Identity identity, int timeoutInMs)
TimeoutException
.
这表示:扩展点实例之间是互斥的,无法叠加的
如果需要根据扩展点执行结果来找第一个匹配的扩展点实例,请使用#forEachExtension(Identity, IReducer)
identity
- 业务身份timeoutInMs
- 执行扩展点的超时时间,in ms;如果超时,会强行终止扩展点的执行Copyright © 2020–2023. All rights reserved.