需求 : 项目开发到尾期,仓库系统需要对接我们这边的制造系统,

为的是制造系统所使用物料时,需向仓库系统发送请求物料信息,所以需要调用

仓库接口.

使用技术: 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的更多相关文章

  1. RabbitMQ学习笔记(一):安装及Springboot集成

    前言 MQ,即消息队列Message Queue的缩写. RabbitMQ 是MQ的一种,就像招商银行是银行的一种一样.主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息 ...

  2. dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. 国产时序数据库IotDB安装、与SpringBoot集成

    一.简介: 本文将完成一个真实业务中的设备上报数据的一个例子,完整的展示后台服务接收到设备上报的数据后,将数据添加到时序数据库,并且将数据查询出来的一个例子.本文所有代码已经上传GitHub:http ...

  4. 【springBoot】springBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  5. SpringBoot集成security

    本文就SpringBoot集成Security的使用步骤做出解释说明.

  6. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  7. SpringBoot集成Shiro并用MongoDB做Session存储

    之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mong ...

  8. SpringBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  9. springboot集成mybatis(二)

    上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...

  10. springboot集成mybatis(一)

    MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...

随机推荐

  1. 【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)

    问题描述 使用StackExchange.Redis 作为Redis客户端SDK,连接Azure Redis服务,长期运行后发现,每天都偶发 Timeout Error. 错误消息如下: StackE ...

  2. Java Servlet单元测试

    Java Servlet单元测试 1. 解决痛点 虽然目前主流的开发方式,很多都是通过controll或者微服务提供api.但是不免还是需要写几个servlet完成接口开发.按照常规,servlet调 ...

  3. 智能升级:AntSK教你如何让聊天机器人实现智能联网操作

    随着人工智能技术的飞速发展,智能体已经逐步融入到我们的日常生活中.不过,要想让智能体不仅能聊天,还能接入网络实时获取信息,为我们提供更多便利,所需技术的复杂性不得不让人瞩目.今天,我将和各位分享如何在 ...

  4. Codeforces Round 260 (Div. 1)A. Boredom(dp)

    最开始写了一发贪心wa了,然后这种选和不选的组合优化问题,一般是考虑动态规划 \(dp[i][0]:\)表示第i个数不选的最大值 \(dp[i][1]:\)表示第i个数选的最大值 考虑转移: \(dp ...

  5. 基于泰凌微TLSR825x的物联网解决方案之ibeacon开发总结

    一 概念   iBeacon 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接 ...

  6. 踩坑经历-jenkins安装使用

    最近在整理之前临时记的笔记,好久之前了,大概记录下. 按照教程安装jenkins,随机选了个不是最新版的docker版本,然后一路下一步,但是到安装推荐插件就没有全部安装成功,我接着走下去想进到&qu ...

  7. 记录--你可能忽略的10种JavaScript快乐写法

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 代码的简洁.美感.可读性等等也许不影响程序的执行,但是却对人(开发者)的影响非常之大,甚至可以说是影响开发者幸福感的重要因素之一: ...

  8. 记录--uni-app App端半屏连续扫码

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文用一个简单的 demo 讲解 App端 半屏连续扫码 的实现方式,包括(条形码.二维码等各种各样的码). 我会从实现思路讲起,如果你比 ...

  9. R语言数据质量分析

    数据质量分析是数据预处理的前提,也是数据分析结论有效性和准确性的基础. 数据质量分析的主要任务是检查原始数据中是否存在脏数据. 脏数据一般包括: 缺失值分析 缺失值产生的原因.影响 原因: 部分信息难 ...

  10. FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

    FFmpeg支持Linux.macOS.Windows.Android等操作系统,其中Linux系列包括Ubuntu.Debian.Mint.CentOS.RHEL.Fedora等分支.FFmpeg官 ...