springboot 基于redis redisson rpc远程调用
调用接口定义
public interface SpiderJobStartRemote {
void start();
int getStarStatus();
}
服务提供者(随项目启动)
@Slf4j
@Component
@Order(99)
public class SpiderStart implements ApplicationRunner,SpiderJobStartRemote {
private int status;
@Override
public void run(ApplicationArguments args){
this.start();
}
@Override
public void start() {
// do some
status = 1;
}
@Override
public int getStarStatus() {
return this.status;
}
}
服务注册(随项目启动)
@Component
@Order(999)
public class RemoteJobRegister implements ApplicationRunner {
@Resource
private RedissonClient redissonClient;
@Resource
private SpiderStart spiderStart;
@Override
public void run(ApplicationArguments args) throws Exception {
// spider 注册
RRemoteService remoteService = redissonClient.getRemoteService();
remoteService.register(SpiderJobStartRemote.class,spiderStart);
}
}
远程调用
@Slf4j
@Service
public class JobRemoteService {
@Autowired
private RedissonClient redissonClient;
public boolean startRule(){
// do some
RRemoteService remoteService = redissonClient.getRemoteService();
SpiderJobStartRemote spiderJobStartRemote = remoteService.get(SpiderJobStartRemote.class);
if( spiderJobStartRemote.getStarStatus() == 0){
spiderJobStartRemote.start();
}
return true;
}
}
完整代码查看