Commit 6c618daa by songxiang

增加内部接口调用链路跟踪

parent 2d9ecb8d
package com.pcloud.common.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @Author: songx
* @Date: 2019年07月11日, 14:11
*/
@Component
public class Application {
/**
* 应用名称
*/
public static String APP_NAME;
@Value("${spring.application.name}")
public void setAppName(String appName) {
this.APP_NAME = appName;
}
}
package com.pcloud.common.dto;
import java.io.Serializable;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import java.io.Serializable;
/**
* @描述:服务响应实体类
* @作者:shichunshan
......@@ -12,107 +13,159 @@ import java.io.Serializable;
*/
@JsonInclude(value = Include.NON_NULL)
public class ResponseDto<T> implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9004186626234235043L;
/**
* 默认操作成功,成功代码
*/
private static final int SUCCESS = 0;
/**
* 默认成功消息
*/
private static final String SUCCESS_MSG = "操作成功!";
/**
* 错误码
*/
private int errCode;
/**
* 消息
*/
private String message;
/**
* 数据
*/
private T data;
/**
* 默认成功
*/
public ResponseDto() {
super();
this.errCode = SUCCESS;
this.message = SUCCESS_MSG;
}
/**
* @param errCode
* @param message
*/
public ResponseDto(int errCode, String message) {
super();
this.errCode = errCode;
this.message = message;
}
/**
* @param errCode
* @param message
* @param data
*/
public ResponseDto(int errCode, String message, T data) {
super();
this.errCode = errCode;
this.message = message;
this.data = data;
}
/**
* 默认成功
*
* @param data
*/
public ResponseDto(T data) {
super();
this.errCode = SUCCESS;
this.message = SUCCESS_MSG;
this.data = data;
}
public int getErrCode() {
return errCode;
}
public void setErrCode(int errCode) {
this.errCode = errCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "ResponseDto [errCode=" + errCode + ", message=" + message + ", data=" + data + "]";
}
/**
*
*/
private static final long serialVersionUID = -9004186626234235043L;
/**
* 默认操作成功,成功代码
*/
private static final int SUCCESS = 0;
/**
* 默认成功消息
*/
private static final String SUCCESS_MSG = "操作成功!";
/**
* 错误码
*/
private int errCode;
/**
* 消息
*/
private String message;
/**
* 数据
*/
private T data;
/**
* 生产者名称
*/
private String produceAppName;
/**
* 生产者IP
*/
private String produceIp;
/**
* 生产者类名
*/
private String produceClassName;
/**
* 生产者方法名
*/
private String produceMethodName;
/**
* 默认成功
*/
public ResponseDto() {
super();
this.errCode = SUCCESS;
this.message = SUCCESS_MSG;
}
/**
* @param errCode
* @param message
*/
public ResponseDto(int errCode, String message) {
super();
this.errCode = errCode;
this.message = message;
}
/**
* @param errCode
* @param message
* @param data
*/
public ResponseDto(int errCode, String message, T data) {
super();
this.errCode = errCode;
this.message = message;
this.data = data;
}
/**
* 默认成功
*
* @param data
*/
public ResponseDto(T data) {
super();
this.errCode = SUCCESS;
this.message = SUCCESS_MSG;
this.data = data;
}
public int getErrCode() {
return errCode;
}
public void setErrCode(int errCode) {
this.errCode = errCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getProduceAppName() {
return produceAppName;
}
public void setProduceAppName(String produceAppName) {
this.produceAppName = produceAppName;
}
public String getProduceClassName() {
return produceClassName;
}
public void setProduceClassName(String produceClassName) {
this.produceClassName = produceClassName;
}
public String getProduceMethodName() {
return produceMethodName;
}
public void setProduceMethodName(String produceMethodName) {
this.produceMethodName = produceMethodName;
}
public String getProduceIp() {
return produceIp;
}
public void setProduceIp(String produceIp) {
this.produceIp = produceIp;
}
@Override
public String toString() {
return "ResponseDto -> " + JSON.toJSONString(this);
}
}
package com.pcloud.common.mq.constant;
/**
* @Author: songx
* @Date: 2019年07月11日, 14:48
*/
public class QueueNameConstant {
/**
* 服务调用链路
*/
public static final String SERVER_LINK = "serverLinkQueue";
}
package com.pcloud.common.mq.dto;
import com.pcloud.common.dto.BaseDto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: songx
* @Date: 2019年07月11日, 14:52
*/
@Getter
@Setter
@ToString(callSuper = true)
public class ServerLinkDTO extends BaseDto {
private static final long serialVersionUID = 2029227731936018946L;
/**
* 消费者服务名称
*/
private String consumerAppName;
/**
* 消费者IP
*/
private String consumerIp;
/**
* 消费者类名
*/
private String consumerClassName;
/**
* 消费者方法名
*/
private String consumerMethodName;
/**
* 生产者服务名称
*/
private String produceAppName;
/**
* 生产者IP
*/
private String produceIp;
/**
* 生产者类名
*/
private String produceClassName;
/**
* 生产者方法名
*/
private String produceMethodName;
/**
* 完整的调用链路
*/
private String links;
}
/**
*
*/
package com.pcloud.common.mq.queue;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.mq.constant.QueueNameConstant;
import com.pcloud.common.mq.dto.ServerLinkDTO;
import lombok.extern.slf4j.Slf4j;
/**
* @author:songx
* @date:2019/6/20,11:37
*/
@Slf4j
@Component
public class ServerLinkQueue {
/**
* 服务调用链路QUEUE
*/
public static void send(ServerLinkDTO serverLinkDTO) throws BizException {
log.info("【QUEUE】服务调用链路.[serverLinkDTO]->" + serverLinkDTO);
if (serverLinkDTO == null) {
throw BizException.PARAM_IS_NULL;
}
getAmqpTemplate().convertAndSend(QueueNameConstant.SERVER_LINK, serverLinkDTO);
}
/**
* 获取实例
*
* @return
*/
public static AmqpTemplate getAmqpTemplate() {
return SingletonInstance.amqpTemplate;
}
@Component
public static class SingletonInstance {
private static AmqpTemplate amqpTemplate;
public SingletonInstance(@Autowired AmqpTemplate amqpTemplate) {
this.amqpTemplate = amqpTemplate;
}
}
}
......@@ -2,6 +2,8 @@ package com.pcloud.common.utils;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @描述:
......@@ -10,26 +12,31 @@ import java.util.Map;
* @版本:1.0
*/
public class ThreadUtil {
@SuppressWarnings("rawtypes")
private static final ThreadLocal ctx = new ThreadLocal();
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void put(Object key, Object value) {
Map m = (Map) ctx.get();
if (m == null) {
m = new HashMap();
}
m.put(key, value);
ctx.set(m);
}
public static Object get(Object key) {
@SuppressWarnings("rawtypes")
Map m = (Map) ctx.get();
if (m != null) {
return m.get(key);
}
return null;
}
/**
* 固定长度程池
*/
public static final ExecutorService FIXED_POOL = Executors.newFixedThreadPool(3);
@SuppressWarnings("rawtypes")
private static final ThreadLocal ctx = new ThreadLocal();
@SuppressWarnings({"rawtypes", "unchecked"})
public static void put(Object key, Object value) {
Map m = (Map) ctx.get();
if (m == null) {
m = new HashMap();
}
m.put(key, value);
ctx.set(m);
}
public static Object get(Object key) {
@SuppressWarnings("rawtypes")
Map m = (Map) ctx.get();
if (m != null) {
return m.get(key);
}
return null;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment