/
Client.java
161 lines (142 loc) · 6 KB
/
Client.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package com.hex.srpc.core.rpc;
import com.hex.common.annotation.Nullable;
import com.hex.common.net.HostAndPort;
import com.hex.srpc.core.connection.IConnection;
import com.hex.srpc.core.invoke.RpcCallback;
import com.hex.srpc.core.protocol.RpcResponse;
import java.util.List;
/**
* @author hs
* <p>
* SRpc客户端
*/
public interface Client {
/**
* 启动客户端
*/
Client start();
/**
* 停止客户端
*/
void stop();
/**
* 设置注册中心地址
*
* @param schema 注册中心协议[默认zookeeper]
* @param registryAddress 注册中心地址
* @return Client
*/
Client configRegistry(String schema, List<String> registryAddress);
/**
* 根据节点发送心跳,探测节点是否能访问
*
* @param nodes 节点地址端口
* @return true:节点间通信正常 false:节点间通信失败
*/
boolean sendHeartBeat(HostAndPort nodes);
/**
* 指定连接发送心跳,探测节点是否能访问
*
* @param connection 与节点的连接
* @return true:连接通信正常 false:连接通信失败
*/
boolean sendHeartBeat(IConnection connection);
/**
* 同步调用,返回整个响应内容,指定rpc服务端节点
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param nodes 指定服务端节点[数量为1时不支持节点容错]
* @return 响应内容
*/
RpcResponse invoke(String mapping, Object[] args, HostAndPort... nodes);
/**
* 同步调用,返回整个响应内容,指定rpc服务节点,带超时重试机制
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param nodes 指定多个服务端节点
* @param retryTimes 失败重试次数
* @return 响应内容
*/
RpcResponse invoke(String mapping, int retryTimes, Object[] args, HostAndPort... nodes);
/**
* 同步调用, 并将成功响应的args自动转换为T类型
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param resultType 响应实体类型
* @param nodes 指定服务端节点[数量为1时不支持节点容错]
* @return 转换后的args响应内容实体
*/
<T> T invoke(String mapping, Class<T> resultType, Object[] args, HostAndPort... nodes);
/**
* 同步调用, 并将成功响应的args自动转换为T类型,指定节点
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param resultType 响应实体类型
* @param nodes 指定多个服务端节点
* @param retryTimes 失败重试次数
* @return 转换后的args响应内容实体
*/
<T> T invoke(String mapping, Class<T> resultType, int retryTimes, Object[] args, HostAndPort... nodes);
/**
* 异步调用,带响应回调方法
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param callback 响应回调任务
* @param nodes 指定服务端节点[数量为1时不支持节点容错]
*/
void invokeAsync(String mapping, @Nullable RpcCallback callback, Object[] args, HostAndPort... nodes);
/**
* 同步调用, 使用注册中心获取服务地址[需配置注册中心地址]
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param serviceName 服务名称[注册到注册中心的服务名称]
* @return 响应内容
*/
RpcResponse invokeWithRegistry(String mapping, String serviceName, Object[] args);
/**
* 同步调用, 使用注册中心获取服务地址[需配置注册中心地址]
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param serviceName 服务名称[注册到注册中心的服务名称]
* @param retryTimes 失败重试次数
* @return 响应内容
*/
RpcResponse invokeWithRegistry(String mapping, String serviceName, int retryTimes, Object[] args);
/**
* 同步调用, 使用注册中心获取服务地址[需配置注册中心地址]
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param resultType 响应实体类型
* @param serviceName 服务名称[注册到注册中心的服务名称]
* @return 响应内容实体
*/
<T> T invokeWithRegistry(String mapping, Class<T> resultType, String serviceName, Object[] args);
/**
* 同步调用, 使用注册中心获取服务地址[需配置注册中心地址]
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param resultType 响应实体类型
* @param serviceName 服务名称[注册到注册中心的服务名称]
* @param retryTimes 失败重试次数
* @return 响应内容实体
*/
<T> T invokeWithRegistry(String mapping, Class<T> resultType, String serviceName, int retryTimes, Object[] args);
/**
* 异步调用, 使用注册中心获取服务地址[需配置注册中心地址]
*
* @param mapping 服务端对应处理器的mapping标识,服务端@mapping注解的值
* @param args 请求实体列表
* @param callback 响应回调任务
* @param serviceName 服务名称[注册到注册中心的服务名称]
*/
void invokeAsyncWithRegistry(String mapping, @Nullable RpcCallback callback, String serviceName, Object[] args);
}