springBoot集成RPC
需求 : 项目开发到尾期,仓库系统需要对接我们这边的制造系统,
为的是制造系统所使用物料时,需向仓库系统发送请求物料信息,所以需要调用
仓库接口.
使用技术: RPC
数据传输格式: json
开发环境:springboot
1.如何向仓库发送数据?
注意:发送的数据格式为json 例如 [{"sex":"nan","name":"1111"}] 对象外面需要 [] 直接上代码
这里转换json 其实有很多种方法 只要是 [{}] array格式即可
1.1发送数据
@Test void contexts() throws Throwable { Product product = new Product(); product.setName("1111"); product.setSex("nan"); JSONArray jsonArray = new JSONArray(); jsonArray.add(JSONUtil.parse(product)); RpcClientUtil.postJsonRPC("http://127.0.0.1:8888/acceptSigned", jsonArray,"acceptSigned"); }
1.2 RpcClientUtil.java 工具类方便发送数据自定义封装即可
import com.googlecode.jsonrpc4j.JsonRpcHttpClient;
import java.net.URL;
/**
* address:要送数据到哪个地址
* params : json数据
* methodName: 接口的方法名字
*/
public class RpcClientUtil {
public static String postJsonRPC(String address, Object params, String methodName) throws Throwable {
URL url = null;
JsonRpcHttpClient jsonRpcHttpClient = null;
String result = null;
try {
url = new URL(address);
jsonRpcHttpClient = new JsonRpcHttpClient(url);
result = jsonRpcHttpClient.invoke(methodName, params, String.class);
} catch (Exception e) {
throw e;
} finally {
url = null;
jsonRpcHttpClient = null;
}
return result;
}
}
2.仓库如何接收数据?
需要编写接口 @JsonRpcService(value = "acceptSigned") acceptSigned 远程地址拼接用的
例如 http://127.0.0.1:8888/acceptSigned
2.1接口AcceptSignedAPI.java
package com.example.rpctest.service; import com.googlecode.jsonrpc4j.JsonRpcService; @JsonRpcService(value = "acceptSigned") public interface AcceptSignedAPI { public void acceptSigned(Object o); }
2.2 接口实现类 注意使用 @AutoJsonRpcServiceImpl 方法名为 acceptSigned
package com.example.rpctest.service.impl; import com.example.rpctest.service.AcceptSignedAPI; import com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImpl; import org.springframework.stereotype.Service; @Service @AutoJsonRpcServiceImpl public class AcceptSignedImpl implements AcceptSignedAPI { @Override public void acceptSigned(Object o) { System.out.println("222"+o); } }
maven 依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>rpctest</artifactId> <version>0.0.1-SNAPSHOT</version> <name>rpctest</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--rpc--> <dependency> <groupId>com.github.briandilley.jsonrpc4j</groupId> <artifactId>jsonrpc4j</artifactId> <version>1.5.3</version> </dependency> <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.6.6</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.72</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
注意发送数据格式如下
成功接收