作者 王勇

搭建sdk基础架子

{
"lockfileVersion": 1
}
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sunyo.wlpt.message.bus.sdk</groupId>
<artifactId>message_bus_sdk</artifactId>
<version>1.0.0</version>
<name>message_bus_sdk</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<!-- <plugin>-->
<!-- <artifactId>maven-project-info-reports-plugin</artifactId>-->
<!-- <version>3.0.0</version>-->
<!-- </plugin>-->
</plugins>
</pluginManagement>
</build>
</project>
... ...
package com.sunyo.wlpt.message.bus.sdk;
import com.sunyo.wlpt.message.bus.sdk.request.MessageRequest;
import com.sunyo.wlpt.message.bus.sdk.response.BusResult;
import java.io.IOException;
/**
* Hello world!
*/
public class App {
public static void main(String[] args)
{
MessageRequest request = new MessageRequest();
BusResult result = request.getMessageOne("zicheng", "S_zicheng",
"V_zicheng", "V_zicheng_zicheng_R");
System.out.println(result);
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.request;
import com.sunyo.wlpt.message.bus.sdk.response.ResultJson;
import com.sunyo.wlpt.message.bus.sdk.utils.GsonUtil;
import com.sunyo.wlpt.message.bus.sdk.utils.OkHttpUtils;
import okhttp3.MediaType;
import java.io.IOException;
import java.util.HashMap;
/**
* @author 子诚
* Description:
* 时间:2020/9/3 15:18
*/
public class BusMessage {
private static final String URL_CONSUMER_ONE = "http://192.168.1.33:9032/bus/rabbit/consumer_one";
private static final String URL_CONSUMER_MORE = "http://192.168.1.33:9032/bus/rabbit/consumer_more";
private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
/**
* 指定队列,消费一条消息
*
* @param RUSR 接收者
* @param SERV 服务器名称
* @param VSHT 虚拟主机名称
* @param RCVR 队列名称
* @return
* @throws IOException
*/
public static ResultJson consumerOne(String RUSR, String SERV, String VSHT, String RCVR)
{
HashMap<String, String> params = new HashMap<>();
params.put("RUSR", RUSR);
params.put("SERV", SERV);
params.put("VSHT", VSHT);
params.put("RCVR", RCVR);
OkHttpUtils okHttp = new OkHttpUtils();
String json = okHttp.doGet(URL_CONSUMER_ONE, params);
ResultJson result = GsonUtil.GsonToBean(json, ResultJson.class);
return result;
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.request;
import com.sunyo.wlpt.message.bus.sdk.response.BusResult;
import com.sunyo.wlpt.message.bus.sdk.response.ResultJson;
/**
* @author 子诚
* Description:
* 时间:2020/9/3 18:04
*/
public class MessageRequest {
private static final String SUCCESS_ONE_CODE = "20200";
/**
* 接收消息,一条
*
* @param RUSR 接收人名称
* @param SERV 服务器名称
* @param VSHT 虚拟主机名称
* @param RCVR 接收队列名称
* @return
*/
public BusResult getMessageOne(String RUSR, String SERV, String VSHT, String RCVR)
{
ResultJson resultJson = BusMessage.consumerOne(RUSR, SERV, VSHT, RCVR);
if (resultJson == null) {
}
String code = resultJson.getCode();
String msg = resultJson.getMsg();
if (!SUCCESS_ONE_CODE.equals(resultJson.getCode())) {
String resultMessage = "错误代码:" + code + ";错误信息:" + msg;
BusResult errorResult = new BusResult(false, code, resultMessage);
return errorResult;
}
String data = (String) resultJson.getData();
BusResult result = new BusResult(true, code, msg, data);
return result;
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.response;
import java.util.List;
/**
* @author 子诚
* Description:返回结果类
* 时间:2020/9/3 18:49
*/
public class BusResult {
/**
* 是否成功?
* true,成功
* false,失败
*/
private Boolean isOk;
/**
* 状态代码
*/
private String code;
/**
* 对应状态信息
*/
private String message;
/**
* 接收一条消息的存放属性
*/
private String data;
/**
* 接收多条消息的存放属性
*/
private List<String> dataList;
public BusResult(Boolean isOk, String code, String message)
{
this.isOk = isOk;
this.code = code;
this.message = message;
}
public BusResult(Boolean isOk, String code, String message, String data)
{
this.isOk = isOk;
this.code = code;
this.message = message;
this.data = data;
}
public BusResult(Boolean isOk, String code, String message, List<String> dataList)
{
this.isOk = isOk;
this.code = code;
this.message = message;
this.dataList = dataList;
}
public Boolean getOk()
{
return isOk;
}
public void setOk(Boolean ok)
{
isOk = ok;
}
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
public String getData()
{
return data;
}
public void setData(String data)
{
this.data = data;
}
public List<String> getDataList()
{
return dataList;
}
public void setDataList(List<String> dataList)
{
this.dataList = dataList;
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.response;
import java.io.Serializable;
/**
* @author 子诚
* Description:返回结果封装类
* 时间:2020/7/01 10:06
*/
public class ResultJson<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 响应业务状态,默认为200
*/
private String code;
/**
* 响应消息
*/
private String msg;
/**
* 错误消息内容
*/
private String error;
/**
* 数据总条数
*/
private Integer total;
/**
* 响应数据
*/
private T data;
/**
* JWT令牌
*/
private String jwtToken;
/**
* 无参,构造方法
*/
public ResultJson()
{
}
/**
* 定义有参构造器
*
* @param code 响应状态
* @param msg 响应消息
*/
public ResultJson(String code, String msg)
{
this.code = code;
this.msg = msg;
}
/**
* 定义有参构造器
*
* @param code 响应状态
* @param msg 响应消息
* @param data 响应数据
*/
public ResultJson(String code, String msg, T data)
{
this.code = code;
this.msg = msg;
this.data = data;
}
public ResultJson(String code, String msg, T data, Integer total)
{
this.code = code;
this.msg = msg;
this.data = data;
this.total = total;
}
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public String getError()
{
return error;
}
public void setError(String error)
{
this.error = error;
}
public Integer getTotal()
{
return total;
}
public void setTotal(Integer total)
{
this.total = total;
}
public T getData()
{
return data;
}
public void setData(T data)
{
this.data = data;
}
public String getJwtToken()
{
return jwtToken;
}
public void setJwtToken(String jwtToken)
{
this.jwtToken = jwtToken;
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
/**
* @author 子诚
* Description:
* 时间:2020/6/5 10:49
*/
public class GsonUtil {
private static Gson gson = null;
static {
if (gson == null) {
gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
}
}
private GsonUtil()
{
}
/**
* 将对象转成json格式
*
* @param object
* @return String
*/
public static String GsonString(Object object)
{
String gsonString = null;
if (gson != null) {
gsonString = gson.toJson(object);
}
return gsonString;
}
/**
* 将json转成特定的cls的对象
*
* @param gsonString
* @param cls
* @return
*/
public static <T> T GsonToBean(String gsonString, Class<T> cls)
{
T t = null;
if (gson != null) {
t = gson.fromJson(gsonString, cls);
}
return t;
}
/**
* json字符串转成list
*
* @param gsonString
* @param cls
* @return
*/
public static <T> List<T> GsonToList(String gsonString, Class<T> cls)
{
List<T> list = null;
if (gson != null) {
list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
}.getType());
}
return list;
}
/**
* json字符串转成list
*
* @param json
* @param cls
* @return
*/
public static <T> List<T> jsonToList(String json, Class<T> cls)
{
ArrayList<T> mList = new ArrayList<T>();
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for (final JsonElement elem : array) {
mList.add(gson.fromJson(elem, cls));
}
return mList;
}
/**
* json字符串转成list中有map的
*
* @param gsonString
* @return
*/
public static <T> List<Map<String, T>> GsonToListMaps(String gsonString)
{
List<Map<String, T>> list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
new TypeToken<List<Map<String, T>>>() {
}.getType());
}
return list;
}
/**
* json字符串转成map的
*
* @param gsonString
* @return
*/
public static <T> Map<String, T> GsonToMaps(String gsonString)
{
Map<String, T> map = null;
if (gson != null) {
map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
}.getType());
}
return map;
}
}
... ...
package com.sunyo.wlpt.message.bus.sdk.utils;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.apache.commons.lang3.StringUtils;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @author 子诚
* Description:
* 时间:2020/9/3 15:22
*/
@Slf4j
public class OkHttpUtils {
private static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8");
private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");
private static final byte[] LOCKER = new byte[0];
private static OkHttpUtils instance;
private OkHttpClient okHttpClient;
public OkHttpUtils()
{
okHttpClient = new OkHttpClient.Builder()
//10秒连接超时
.connectTimeout(10, TimeUnit.SECONDS)
//10m秒写入超时
.writeTimeout(10, TimeUnit.SECONDS)
//10秒读取超时
.readTimeout(10, TimeUnit.SECONDS)
.build();
}
public static OkHttpUtils getInstance()
{
if (instance == null) {
synchronized (LOCKER) {
if (instance == null) {
instance = new OkHttpUtils();
}
}
}
return instance;
}
public String doGet(String url)
{
if (isBlankUrl(url)) {
return null;
}
Request request = getRequestForGet(url);
return commonRequest(request);
}
public String doGet(String url, HashMap<String, String> params)
{
if (isBlankUrl(url)) {
return null;
}
Request request = getRequestForGet(url, params);
return commonRequest(request);
}
public String doPostJson(String url, String json)
{
if (isBlankUrl(url)) {
return null;
}
Request request = getRequestForPostJson(url, json);
return commonRequest(request);
}
public String doPostForm(String url, Map<String, String> params)
{
if (isBlankUrl(url)) {
return null;
}
Request request = getRequestForPostForm(url, params);
return commonRequest(request);
}
private Boolean isBlankUrl(String url)
{
if (StringUtils.isBlank(url)) {
log.info("url is not blank");
return true;
} else {
return false;
}
}
private String commonRequest(Request request)
{
String re = "";
try {
Call call = okHttpClient.newCall(request);
Response response = call.execute();
if (response.isSuccessful()) {
re = response.body().string();
log.info("request url:{};response:{}", request.url().toString(), re);
} else {
log.info("request failure url:{};message:{}", request.url().toString(), response.message());
}
} catch (Exception e) {
log.error("request execute failure", e);
}
return re;
}
private Request getRequestForPostJson(String url, String json)
{
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
return request;
}
private Request getRequestForPostForm(String url, Map<String, String> params)
{
if (params == null) {
params = new HashMap<>();
}
FormBody.Builder builder = new FormBody.Builder();
if (params != null && params.size() > 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
builder.addEncoded(entry.getKey(), entry.getValue());
}
}
RequestBody requestBody = builder.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
return request;
}
private Request getRequestForGet(String url, HashMap<String, String> params)
{
Request request = new Request.Builder()
.url(getUrlStringForGet(url, params))
.build();
return request;
}
private Request getRequestForGet(String url)
{
Request request = new Request.Builder()
.url(url)
.build();
return request;
}
private String getUrlStringForGet(String url, HashMap<String, String> params)
{
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(url);
urlBuilder.append("?");
if (params != null && params.size() > 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
try {
urlBuilder.append("&").append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "UTF-8"));
} catch (Exception e) {
urlBuilder.append("&").append(entry.getKey()).append("=").append(entry.getValue());
}
}
}
return urlBuilder.toString();
}
}
\ No newline at end of file
... ...