springboot 基于redis redisson rpc远程调用

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;
    }
}

完整代码查看

经验分享 程序员 微信小程序 职场和发展