Solon Rpc 超时和心跳控制
有些场景请求得半小时,有些则1秒。
1、请求超时的控制(对 http、socket、websocket 通道都有效)
- 使用注解控制 timeout (单位:秒)
//在接口使用时配置
@NamiClient(name = "userapi", path="/rpc/v1/user", timeout=60*5)
UserService userService;
//或者
//在接口申明时配置
@NamiClient(name = "userapi", path="/rpc/v1/user", timeout=60*5)
public class UserService{
//..
}
- 使用构建器
UserService userService = Nami.builder().name("userapi").path("/rpc/v1/user")
.timeout(60*5)
.decoder(SnackDecoder.instance)
.encoder(SnackTypeEncoder.instance)
.create(UserService.class);
- 使用全局配置(会对全局有影响,使用时注意)
@Configuration
public class Config {
@Bean
public NamiConfiguration initNami(){
return new NamiConfiguration() {
@Override
public void config(NamiClient client, NamiBuilder builder) {
builder.timeout(60*5);
builder.decoder(SnackDecoder.instance);
builder.encoder(SnackTypeEncoder.instance);
}
};
}
}
2、心跳间隔控制(仅对 socket、websocket 通道有效)
- 使用注解控制 heartbeat (单位:少)
@NamiClient(name = "userapi", path="/rpc/v1/user", heartbeat=30);
UserService userService;
- 使用构建器
UserService userService = Nami.builder().name("userapi").path("/rpc/v1/user")
.heartbeat(30)
.decoder(SnackDecoder.instance)
.encoder(SnackTypeEncoder.instance)
.create(UserService.class);
- 使用全局配置(会对全局有影响,使用时注意)
@Configuration
public class Config {
@Bean
public NamiConfiguration initNami(){
return new NamiConfiguration() {
@Override
public void config(NamiClient client, NamiBuilder builder) {
builder.heartbeat(30)
builder.decoder(SnackDecoder.instance);
builder.encoder(SnackTypeEncoder.instance);
}
};
}
}