org.springframework.cloud
spring-cloud-config-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-bus-amqp
org.springframework.boot
spring-boot-starter-actuator
server:
port: 8765
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/LuciferZK/config-repo
username: [email protected]
password: ---------*******
#basedir: D:\project\morning-star\config-server\config\basedir
rabbitmq:
host: 192.168.47.131
port: 5672
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: bus-refresh
@EnableConfigServer
@SpringBootApplication
public class MorningConfigApplication {
public static void main(String[] args) {
SpringApplication.run(MorningConfigApplication.class, args);
}
}
org.springframework.cloud
spring-cloud-starter-config
org.springframework.cloud
spring-cloud-starter-bus-amqp
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
spring:
application:
name: morning-service-order
cloud:
config:
uri: http://localhost:8765
profile: dev
bus:
enabled: true
trace:
enabled: true
rabbitmq:
host: 192.168.47.131
port: 5672
username: guest
password: guest
并无任何问题。如果想自动刷新的话,不可能每次去使用postman请求一次,所以按照如下操作即可:
(1)设置
(2)添加
我这里只是用的免费版的,免费的缺点是映射的外网网址不会固定不变,随机的;
具体操作看附的连接中的文档;工具双击打开:
这里的forwarding 的地址就是填在github上Payload URL的地址;再次提醒,免费版的,映射地址会变动的,除非你cmd不关闭。
上述操作完毕后,用postman测试,并无问题,但是你在github上修改配置文件,github自动请求你的http://****/actuator/bus-refresh的时候,你的config-server会报错,报错内容就是json解析失败.
package com.lucifer.config.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author: lucifer
* @date: 2019/8/27
* @description:
*/
@Component
//@WebFilter(urlPatterns = "/**", filterName = "BusFilter")
public class BusFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) req;
String requestURI = httpServletRequest.getRequestURI();
//过滤掉非/actuator/bus-refresh请求
if (!requestURI.endsWith("/actuator/bus-refresh")) {
filterChain.doFilter(req, res);
return;
}
RequestWrapper requestWrapper = new RequestWrapper(httpServletRequest);
filterChain.doFilter(requestWrapper, res);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) {
}
}
package com.lucifer.config.filter;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
/**
* @author: lucifer
* @date: 2019/8/27
* @description:
*/
public class RequestWrapper extends HttpServletRequestWrapper {
public RequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
public ServletInputStream getInputStream() throws IOException {
byte[] bytes = new byte[0];
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
return new ServletInputStream() {
@Override
public int read() throws IOException {
return byteArrayInputStream.read();
}
@Override
public boolean isFinished() {
return byteArrayInputStream.read() == -1 ? true : false;
}
@Override
public boolean isReady() {
return false;
}
@Override
public void setReadListener(ReadListener readListener) {
}
};
}
}