English | 🇨🇳中文
- pom.xml文件中添加snapshots源
<repositories>
<repository>
<id>releases</id>
<name>Releases</name>
<url>https://oss.sonatype.org/content/repositories/releases/</url>
</repository>
<repository>
<id>snapshots</id>
<name>Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
- pom.xml文件中添加依赖
<!-- https://mvnrepository.com/artifact/com.sunquakes/jsonrpc4j -->
<dependency>
<groupId>com.sunquakes</groupId>
<artifactId>jsonrpc4j</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
- 方法1. 用配置文件方式注入
@Configuration
@JsonRpcScan({"com.sunquakes"})
public class JsonRpcConfig {
}
- 方法2. 在入口Application文件中注入
@SpringBootApplication
@JsonRpcScan({"com.sunquakes.jsonrpc4j.spring.boot"})
public class JsonRpcApplication {
public static void main(String[] args) {
SpringApplication.run(JsonRpcApplication.class, args);
}
}
- 添加服务端配置项到application.properties文件中
# 配置服务端采用的协议,可以配置tcp或http。
jsonrpc.server.protocol=tcp
# 配置服务端监听的端口。
jsonrpc.server.port=3200
# 如果采用的协议是http,接下来的两个配置项可以忽略。
# 单次数据的结束符,分隔服务端接收的数据。
jsonrpc.server.package-eof=\r\n
# 服务端接收数据的缓存区大小。
jsonrpc.server.package-max-length=2097152
- 创建一个名为IJsonRpcService的接口文件,添加注解@JsonRpcService,value值为服务名
@JsonRpcService(value = "JsonRpc")
public interface IJsonRpcService {
int add(int a, int b);
}
- 创建一个名为JsonRpcServiceImpl的类文件去实现接口IJsonRpcService
public class JsonRpcServiceImpl implements IJsonRpcService {
@Override
public Integer add(int a, int b) {
return a + b;
}
}
- 添加客户端配置项到application.properties文件中
# Symbol for the end of data request once.
jsonrpc.client.package-eof=\r\n
创建一个名为IJsonRpcClient的接口文件,添加注解@JsonRpcClient,其中配置的value值为请求的服务名(与步骤3的value值对应),protocol值可以是tcp/http/https(与步骤2中配置的jsonrpc.server.protocol值对应)。
@JsonRpcClient(value = "JsonRpc", protocol = JsonRpcProtocol.TCP, url = "localhost:3200")
public interface IJsonRpcClient {
int add(int a, int b);
}
public class JsonRpcTest {
@Autowired
private IJsonRpcClient jsonRpcClient;
public int add() {
// 发送的数据格式: {"id":"691bbf41-e992-4f45-9c0d-1eeb0b088698","jsonrpc":"2.0","method":"json_rpc/add","params":{"a":3,"b":4}}
// 接收的数据格式: {"id":"691bbf41-e992-4f45-9c0d-1eeb0b088698","jsonrpc":"2.0","result":7}
return jsonRpcClient.add(1, 2); // 返回结果是3
}
}
- Consul
# 主机名,非必填项,如果用默认主机ip,此项可以不配置
jsonrpc.discovery.hostname=192.168.39.1
# consul地址
# instanceId: 用来区分不同节点上拥有相同主机名和端口的
# check: 开启健康检查,默认关闭
# checkInterval: 健康检查周期,默认60s
jsonrpc.discovery.url=http://127.0.0.1:8500?instanceId=2&check=true&checkInterval=5s
# consul驱动
jsonrpc.discovery.driver-name=com.sunquakes.jsonrpc4j.discovery.Consul
- Nacos
# 主机名,非必填项,如果用默认主机ip,此项可以不配置
jsonrpc.discovery.hostname=192.168.39.1
# nacos地址
# 支持 [Open API Guide](https://nacos.io/zh-cn/docs/open-api.html) 注册实例章节的请求参数
jsonrpc.discovery.url=http://127.0.0.1:8849?namespaceId=XXXXXX&...
# consul驱动
jsonrpc.discovery.driver-name=com.sunquakes.jsonrpc4j.discovery.Nacos
mvn test