diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java new file mode 100644 index 0000000000..7fb9822290 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/EpmetBaseRequestInterceptor.java @@ -0,0 +1,35 @@ +package com.epmet.commons.tools.feign; + +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; + + +public class EpmetBaseRequestInterceptor implements RequestInterceptor { + + @Override + public void apply(RequestTemplate template) { + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + if (requestAttributes == null) { + return; + } + + HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); + Enumeration headerNames = request.getHeaderNames(); + if (headerNames != null) { + while (headerNames.hasMoreElements()) { + String name = headerNames.nextElement(); + Enumeration values = request.getHeaders(name); + while (values.hasMoreElements()) { + String value = values.nextElement(); + template.header(name, value); + } + } + } + } +} \ No newline at end of file diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java index c68dbc2913..ec7806a620 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/FeignConfig.java @@ -1,8 +1,8 @@ /** * Copyright (c) 2018 人人开源 All rights reserved. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -10,49 +10,32 @@ package com.epmet.commons.tools.feign; import feign.Logger; import feign.RequestInterceptor; -import feign.RequestTemplate; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import java.util.Enumeration; /** * Feign调用,携带header + * 各服务可以自定义自己的RequestInterceptor,如果自定义了,此处不会再生效,会优先使用自定义的拦截器实例 * * @author Mark sunlightcs@gmail.com * @since 1.0.0 */ @Configuration -public class FeignConfig implements RequestInterceptor { - @Override - public void apply(RequestTemplate template) { - RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); - if (requestAttributes == null) { - return; - } - - HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); - Enumeration headerNames = request.getHeaderNames(); - if (headerNames != null) { - while (headerNames.hasMoreElements()) { - String name = headerNames.nextElement(); - Enumeration values = request.getHeaders(name); - while (values.hasMoreElements()) { - String value = values.nextElement(); - template.header(name, value); - } - } - } +public class FeignConfig { + @Bean + @ConditionalOnMissingBean + RequestInterceptor requestInterceptor() { + return new EpmetBaseRequestInterceptor(); } @Bean + @ConditionalOnMissingBean Logger.Level feignLoggerLevel() { return Logger.Level.BASIC;//控制台会输出debug日志 } + + } diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/JobFeignConfig.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/JobFeignConfig.java new file mode 100644 index 0000000000..d053f347cf --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/config/JobFeignConfig.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + * + * https://www.renren.io + * + * 版权所有,侵权必究! + */ + +package com.epmet.config; + +import com.epmet.commons.tools.constant.AppClientConstant; +import com.epmet.commons.tools.feign.EpmetBaseRequestInterceptor; +import feign.RequestInterceptor; +import feign.RequestTemplate; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Feign调用,携带header + * + * @author Mark sunlightcs@gmail.com + * @since 1.0.0 + */ +@Configuration +public class JobFeignConfig { + + @Bean + RequestInterceptor requestInterceptor() { + return new JobRequestInterceptor(); + } + + class JobRequestInterceptor extends EpmetBaseRequestInterceptor { + @Override + public void apply(RequestTemplate template) { + super.apply(template); + + // job服务自己生成流水号 + template.header(AppClientConstant.TRANSACTION_SERIAL_KEY, generateTransactionSerial()); + } + + /** + * 获取事务流水号 + * + * @return + */ + public String generateTransactionSerial() { + String[] letterPool = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n" + , "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 2; i++) { + sb.append(letterPool[(int) (Math.random() * 25)]); + } + + sb.append(System.currentTimeMillis()); + return sb.toString(); + } + } +} \ No newline at end of file