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>
注意发送数据格式如下

成功接收

springBoot集成RPC的更多相关文章
- RabbitMQ学习笔记(一):安装及Springboot集成
前言 MQ,即消息队列Message Queue的缩写. RabbitMQ 是MQ的一种,就像招商银行是银行的一种一样.主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息 ...
- dubbo实战之二:与SpringBoot集成
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 国产时序数据库IotDB安装、与SpringBoot集成
一.简介: 本文将完成一个真实业务中的设备上报数据的一个例子,完整的展示后台服务接收到设备上报的数据后,将数据添加到时序数据库,并且将数据查询出来的一个例子.本文所有代码已经上传GitHub:http ...
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot集成security
本文就SpringBoot集成Security的使用步骤做出解释说明.
- springboot集成Actuator
Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...
- SpringBoot集成Shiro并用MongoDB做Session存储
之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mong ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成mybatis(二)
上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...
- springboot集成mybatis(一)
MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...
随机推荐
- Finder Error code -36 “访达” 错误代码-36
导致这个问题的原因是你的iCloud (iCloud和iCloud Drive是不一样的) 快满了. 如果你想解决这个问题,有以下三个方法: 1.多买苹果iCloud.(是的,苹果现在太恶心了.但这是 ...
- 【Azure 环境】Azure应用程序网关设置set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD登录使用cookie时使用不了的案例记录
问题描述 Azure应用程序网关设置 set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD 登录使用cookie时使用不了. 分析过程 重写网 ...
- 详解SSL证书系列(4)免费的SSL证书和收费的证书有什么区别
上一篇介绍了如何选择SSL证书,更多地是从证书类型角度介绍的.SSL证书有免费和收费的,那么它们之间有什么区别呢? SSL证书免费和收费的主要区别体现在以下几个方面: 1,验证类型 免费SSL证书通常 ...
- C++之指针变量的定义和使用
从b站上黑马程序员的c++课里学到的C++之指针变量的定义和使用 指针变量的定义和使用 简单理解指针就是地址. 内存编号是从0开始记录的,一般用16进制数字表示 1 #include <iost ...
- 工具 --- IL指令集解释
引言 汇总一下所有的 .NET IL 指令,以及它们的名称.操作码值.堆栈转换行为和描述. 作为反编译IL代码时的查询字典. IL 指令集列表 以下内容来自微软官方文档,通过百度翻译API翻译为中文. ...
- offline RL | D4RL:最常用的 offline 数据集之一
pdf:https://arxiv.org/pdf/2004.07219.pdf html:https://ar5iv.labs.arxiv.org/html/2004.07219 GitHub:ht ...
- 基于BES2500芯片的低功耗蓝牙BLE游戏手柄解决方案源码解析
一 往事 寒冬腊月,在一个寂静的天空飘着碎银雪花的夜晚.我接到这么一个电话:"朋友,能否帮忙开发一个游戏手柄的案子?我们遇到了一些问题,迟迟无法解决.",喔,这边我陷入了沉思 ...
- ubuntu 14.04 x86_64编译安装Skyeye1.3.5RC1的心得
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-11-09 09:19:03 ...
- 【Linux】Git 安装最新版
# 移除旧版 Git yum remove git # 安装依赖包 yum install curl-devel expat-devel gettext-devel openssl-devel zli ...
- 3DCAT为华东师大设计学院打造元宇宙数字虚拟学院
6月11日,华东师范大学设计学院在chi K11美术馆举办了一场别开生面的 2023 年本科毕业设计暨项目实践教学现场演示展.其中,元宇宙数字虚拟学院(一期)的现场发布会引起了现场震撼,吸引了众多观众 ...