Вот еще один хороший пример удаленного вызова метода с каркасом Redisson:
Давайте предположим, что YourServiceImpl
содержит метод, который вам нужен для удаленного вызова, и реализует YourService
интерфейс.
YourServiceImpl должен быть зарегистрирован в Redisson через объект RemoteService:
YourService yourService = new YourServiceImpl();
RRemoteService remoteService = redisson.getRemoteService();
remoteService.register(YourService.class, yourService);
Для удаленного вызова метода требуется только служебный интерфейс:
RRemoteService remoteService = redisson.getRemoteService();
YourService service = remoteService.get(YourService.class);
MyObject result = service.myMethod(someParam1, someParam2);
Также он поддерживает асинхронные вызовы.
// async interface for YourService
@RRemoteAsync(YourService.class)
public interface YourServiceAsync {
RFuture<Long> someMethod1(Long param1, String param2);
RFuture<Void> someMethod2(MyObject param);
}
RRemoteService remoteService = redisson.getRemoteService();
YourServiceAsync asyncService = remoteService.get(YourServiceAsync.class);
RFuture<Long> res = asyncService.someMethod1(12L, "param");
res.thenApply(r -> {
...
});
Подробнее здесь