您的位置 首页 java

java微服务实战项目股票项目搭建,第二天 cat集成测试

1.使用阿里云服务器搭建完成美团cat,启动cat

账号密码都是admin

java微服务实战项目股票项目搭建,第二天 cat集成测试

2.本地启动cat-demo服务

java微服务实战项目股票项目搭建,第二天 cat集成测试

CatContext.java

 public class CatContext implements Cat.Context{
    /**
     * 链路监控信息
     */    private Map<String, String > properties = new HashMap<>();
    @Override
    public  void  addProperty(String key ,String value){
        properties.put(key,value);
    }

    @Override
    public String getProperty(String  key) {
        return   properties.get(key);
    }

   

  

CatFilterConfigure.java

 public class CatFilterConfigure {

    @Bean
    public FilterRegistrationBean catFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        CatServletFilter filter = new CatServletFilter();
        registration.setFilter(filter);
        registration.addUrlPatterns("/*");
        registration.setName("cat-filter");
        registration.setOrder(1);
        return registration;
    }
}  

CatHttpConstants.java

 public class CatHttpConstants {
    public  static  final String CAT_HTTP_HEADER_CHILD_MESSAGE_ID = "X-CAT-CHILD-ID";
    public static final String CAT_HTTP_HEADER_PARENT_MESSAGE_ID = "X-CAT-PARENT-ID";
    public static final String CAT_HTTP_ Header _ROOT_MESSAGE_ID = "X-CAT-ROOT-ID";

}
  

CatRestInterceptor.java

 @Component
public class CatRestInterceptor implements ClientHttp Request Interceptor {

@Override
public ClientHttpResponse intercept(HttpRequest request,  byte [] body, ClientHttpRequestExecution execution)
throws IO Exception  {

Transaction t = Cat.newTransaction(CatConstants.TYPE_REMOTE_CALL, request.getURI().toString());

try {
HttpHeaders headers = request.getHeaders();

// 保存和传递CAT调用链上下文
Cat.Context ctx = new CatContext();
Cat.logRemoteCallClient(ctx);
headers.add(CatHttpConstants.CAT_HTTP_HEADER_ROOT_MESSAGE_ID, ctx.getProperty(Cat.Context.ROOT));
headers.add(CatHttpConstants.CAT_HTTP_HEADER_PARENT_MESSAGE_ID, ctx.getProperty(Cat.Context.PARENT));
headers.add(CatHttpConstants.CAT_HTTP_HEADER_CHILD_MESSAGE_ID, ctx.getProperty(Cat.Context.CHILD));

// 继续执行请求
ClientHttpResponse response =  execution.execute(request, body);
t.setStatus(Transaction.SUCCESS);
return response;
} catch (Exception e) {
Cat.getProducer().logError(e);
t.setStatus(e);
throw e;
} finally {
t.complete();
}
}
}  

CatServletFilter.java

 public class CatServletFilter implements Filter {

     private  String[] urlPatterns = new String[0];

    /**
     * 初始化配置
     * @param filterConfig
     * @throws ServletException
     */    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String patterns = filterConfig.getInitParameter("CatHttpModuleUrlPatterns");
        if (patterns != null) {
            patterns = patterns.trim();
            urlPatterns = patterns.split(",");
            for (int i = 0; i < urlPatterns.length; i++) {
                urlPatterns[i] = urlPatterns[i].trim();
            }
        }
    }

    /**
     * 请求过滤处理
     * @param servletRequest
     * @param servletResponse
     * @param filterChain
     * @throws IOException
     * @throws ServletException
     */    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;

        String url = request.getRequestURL().toString();
        for (String urlPattern : urlPatterns) {
            if (url.startsWith(urlPattern)) {
                url = urlPattern;
            }
        }

        // cat 上下文信息设置
        CatContext catContext = new CatContext();
        catContext.addProperty(Cat.Context.ROOT, request.getHeader(CatHttpConstants.CAT_HTTP_HEADER_ROOT_MESSAGE_ID));
        catContext.addProperty(Cat.Context.PARENT, request.getHeader(CatHttpConstants.CAT_HTTP_HEADER_PARENT_MESSAGE_ID));
        catContext.addProperty(Cat.Context.CHILD, request.getHeader(CatHttpConstants.CAT_HTTP_HEADER_CHILD_MESSAGE_ID));
        Cat.logRemoteCallServer(catContext);

        Transaction t = Cat.newTransaction(CatConstants.TYPE_URL, url);

        try {
            // cat日志记录
            Cat.logEvent("Service.method", request.getMethod(), Message.SUCCESS, request.getRequestURL().toString());
            Cat.logEvent("Service.client", request.getRemoteHost());

            filterChain.doFilter(servletRequest, servletResponse);

            t.setStatus(Transaction.SUCCESS);
        } catch (Exception ex) {
            t.setStatus(ex);
            Cat.logError(ex);
            throw ex;
        } finally {
            t.complete();
        }
    }

}  

(启动类) CatDemoGatewayApplication.java

 package com.itcast.bulls.stock.cat.demo.gateway.startup;

import com.dianping.cat.Cat;
import com.dianping.cat.CatConstants;
import com.dianping.cat.message.Transaction;
import com.itcast.bulls.stock.cat.demo.gateway.catutils.CatRestInterceptor;
import org.springframework.beans.factory. annotation .Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot. Spring Application;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import  java .util.Collections;

@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan(basePackages = {"com.itcast"})
@RestController
public class CatDemoGatewayApplication {
    @Autowired
    private RestTemplate restTemplate;
    @Value("${service2.address:localhost:8082}")
    private String serviceAddress;
    public static void main(String[] args) {
        SpringApplication.run(CatDemoGatewayApplication.class,args);
    }
    @RequestMapping("/gateway")
    public String gateway() throws Exception{
        Thread.sleep(100);
        String response = restTemplate.getForObject("#34;+serviceAddress + "/order",String.class);
        return "gateway response=>" + response;
    }

    /**
     * 模拟请求异常
     * @return
     * @throws Exception
     */    @RequestMapping("/timeout")
    public String timeout() throws Exception{
        Transaction t = Cat.newTransaction(CatConstants.TYPE_URL,"timeout");
        try{
            Thread.sleep(100);
            String response = restTemplate.getForObject("#34; + serviceAddress + "/timeout",String.class);
            return response;
        }catch (Exception e){
            Cat.getProducer().logError(e);
            t.setStatus(e);
            throw e;
        }finally {
            t.complete();
        }
    }
    @Bean
    RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        // 保存和传递调用链上下文
        restTemplate.setInterceptors(Collections.singletonList(new CatRestInterceptor()));
        return restTemplate;
    }
}
  

其他几个服务配置一样。

本地配置D:dataappdatascatclient.xml

 <?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="106.14.250.251" port="2280" http-port="8080" enabled="true"/>
</servers>
</config>
  

3.调用接口

   

java微服务实战项目股票项目搭建,第二天 cat集成测试

4.问题

Log View点击显示错误

Sorry, the message is not there. It could be missing or archived.

问题待解决

文章来源:智云一二三科技

文章标题:java微服务实战项目股票项目搭建,第二天 cat集成测试

文章地址:https://www.zhihuclub.com/184206.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图