
org.jetlinks.rule.engine.api.rpc.RpcService Maven / Gradle / Ivy
package org.jetlinks.rule.engine.api.rpc;
import org.reactivestreams.Publisher;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.function.BiFunction;
import java.util.function.Function;
/**
* Rpc 服务
*
* @author zhouhao
* @since 1.0.4
*/
public interface RpcService {
/**
* 监听请求,相当于发布服务.
*
* @param definition RPC定义
* @param call 请求回掉
* @param 请求类型
* @param 响应类型
* @return Disposable
*/
Disposable listen(RpcDefinition definition,
BiFunction> call);
/**
* 监听没有参数的请求.
*
* @param definition RPC定义
* @param call 请求回掉
* @param 响应类型
* @return Disposable
*/
Disposable listen(RpcDefinition definition,
Function> call);
/**
* 调用RPC服务
*
* @param definition RPC定义
* @param payload 请求参数
* @param 参数类型
* @param 响应类型
* @return 响应结果
*/
Flux invoke(RpcDefinition definition, Publisher extends REQ> payload);
/**
* 调用没有参数的RPC服务
*
* @param definition RPC定义
* @param 响应类型
* @return 响应结果
*/
Flux invoke(RpcDefinition definition);
/**
* 调用RPC服务
*
* @param definition RCP定义
* @param payload 请求体
* @param 请求类型
* @param 响应类型
* @return 响应结果
*/
default Flux invoke(RpcDefinition definition, REQ payload) {
return invoke(definition, Mono.just(payload));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy