首页 > 其他分享 >SpringCloud gateway 元数据,超时,Netty Access Logs

SpringCloud gateway 元数据,超时,Netty Access Logs

时间:2023-05-07 13:44:29浏览次数:35  
标签:Netty http Logs producer SpringCloud response timeout true hello

元数据

spring:
  cloud:
    gateway:
      routes:
      - id: route_with_metadata
        uri: https://example.org
        metadata:
          optionName: "OptionValue"
          compositeObject:
            name: "value"
          iAmNumber: 1

可通过ServerWebExchange获取:

Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
route.getMetadata();
route.getMetadata(someKey);

超时

要配置全局http超时:
connect-timeout必须以毫秒为单位指定。
response-timeout必须指定为java.time.Duration。

spring:
  cloud:
    gateway:
      enabled: true
      routes:
        - id: Goods-Server  # 路由 id,唯一标识
          uri: lb://producer
          predicates:
            #  - Path=/**  # 断言,路由匹配条件,匹配 /product 开头的所有 api
              - Path=/producer/{segment}
          filters:
              - StripPrefix=1
      metrics:
        tags:
          path:
            enabled: true
        enabled: true
      httpclient:
        connect-timeout: 1000
        response-timeout: 1s

修改Producer模块的Controller:

@RequestMapping("/hello")
public String hello(String name, HttpServletRequest request, HttpServletResponse response) {
    try {
        TimeUnit.SECONDS.sleep(2);
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
    return "hello," + name + "," + port;
}

访问http://localhost:8500/producer/hello,看到:

要配置每个路由超时:
connect-timeout必须以毫秒为单位指定。
response-timeout必须以毫秒为单位指定。

spring:
  cloud:
    gateway:
      enabled: true
      routes:
        - id: Goods-Server  # 路由 id,唯一标识
          uri: lb://producer
          predicates:
            #  - Path=/**  # 断言,路由匹配条件,匹配 /product 开头的所有 api
              - Path=/producer/{segment}
          filters:
              - StripPrefix=1
          metadata:
            response-timeout: 200
            connect-timeout: 200

修改Producer模块的Controller:

@RequestMapping("/hello")
public String hello(String name, HttpServletRequest request, HttpServletResponse response) {
    try {
        TimeUnit.SECONDS.sleep(2);
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
    return "hello," + name + "," + port;
}

访问http://localhost:8500/producer/hello,看到:

Netty Access Logs

要启用Reactor Netty访问日志,请设置-Dreaactor.Netty.http.server.accessLogEnabled=true。必须是Java System Property, 不能是Spring Boot property。

在Resources加入 logback.xml文件:

<configuration debug="false">
    <!-- 一、日志文件存放的地址,可以更改 -->
    <property name="LOG_HOME" value="/home/shigp/文档"/>
    <!-- 这里更改 -->
    <!-- 二、日志输出到控制台的代码 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 刷新时间 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 三、日志输出到本地文件的代码 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 当文件到达多大就自动新建一个文件继续存放数据 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/log.%d{yyyy-MM-dd}.%i.log </fileNamePattern>
            <maxFileSize>1000MB</maxFileSize>
            <MaxHistory>60</MaxHistory>
        </rollingPolicy>
        <!-- 刷新时间 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - [%thread] %-5level %logger{50} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 四、总控制开关的代码 -->
    <root level="INFO">
        <!-- 输出级别(多少),默认就是DEBUG。TRACE<DEBUG<INFO<WARN<ERROR -->
        <appender-ref ref="STDOUT"/>
        <!-- 输出到控制台,不想输出到控制台可以删掉 -->
        <appender-ref ref="FILE"/>
        <!-- 输出本地磁盘文件夹中,不想输出到文件夹中可以删掉 -->
    </root>
</configuration>

启动GatewayServer是加入JVM属性:-Dreactor.netty.http.server.accessLogEnabled=true。访问http://localhost:8500/producer/hello,从控制台看到:

2023-05-07 13:35:41.625  INFO 43318 --- [or-http-epoll-2] reactor.netty.http.server.AccessLog      : 0:0:0:0:0:0:0:1%0 - - [07/5月/2023:13:35:41 +0800] "GET /producer/hello HTTP/1.1" 200 15 257

标签:Netty,http,Logs,producer,SpringCloud,response,timeout,true,hello
From: https://www.cnblogs.com/shigongp/p/17379161.html

相关文章

  • SpringCloud gateway HttpHeadersFilters
    HttpHeadersFilter在将请求发送到下游之前应用于请求,例如在NettyRoutingFilter中。1、ForwardedHeadersFilterForwardedHeadersFilter创建一个Forwarded标头以发送到下游服务。它将当前请求的Host标头、scheme和端口添加到任何现有的Forwarded标头中。2、RemoveHopByHopH......
  • SpringCloud gateway全局过滤器
    GlobalFilter接口具有与GatewayFilter相同的签名。这些是有条件地应用于所有路由的特殊过滤器。组合GlobalFilter和GatewayFilter当请求与路由匹配时,过滤web处理程序会将GlobalFilter的所有实例和GatewayFilter的所有路由特定实例添加到过滤器链中。这个组合的过滤器链由org.spr......
  • SpringCloud gateway内置过滤器之六
    1、RequestSizeGatewayFilter当请求大小大于允许的限制时,RequestSizeGatewayFilter可以限制请求到达下游服务。过滤器采用maxSize参数。maxSize是`DataSize类型,因此可以将值定义为一个数字,后跟可选的DataUnit后缀,如“KB”或“MB”。字节的默认值为“B”。它是以字节为单位定义......
  • SpringCloud gateway内置过滤器之五
    1、SetRequestHeaderGatewayFilterSetRequestHeaderGatewayFilter设置请求头,会覆盖原来已有的请求头。spring:cloud:gateway:enabled:trueroutes:-id:Goods-Server#路由id,唯一标识uri:lb://producerpredicates......
  • SpringCloud gateway内置过滤器之四
    1、RewriteLocationResponseHeaderGatewayFilterRewriteLocationResponseHeaderGatewayFilter修改Location响应标头的值,通常是为了消除后端特定的详细信息。有stripVersionMode、locationHeaderName、hostValue和protocolsRegex参数。protocolsRegx参数必须是有效的正则表达式......
  • 六、分布式SpringCloud环境--谷粒商城
    分布式SpringCloud环境一、注册中心:SpringCloudAlibabaNacos版本:nacos1.1.3链接:https://github.com/alibaba/nacos/releases?page=4主机端使用:(1)、下载zip,并解压,打开bin里的startup.cmd (2)、引入依赖、修改配置文件:导入nacos配置引入依赖<dependency><grou......
  • filebeat+kafka_logstash+es进行日志分析
    filebeat+kafka_logstash+es进行日志分析目录一.将安装包上传至目标服务器(即日志所在的服务器)二.解压安装三.配置filebeat1.配置采集日志到logstash,这种配置适用于日志量较小的场景,Filebeat--->logstash,logstash直接解析filebeat2.配置采集日志至kafka,file......
  • springcloud小应用
    一、Actuator修改Actuator端点前缀management.endpoints.web.base-path=/manage将原来的mappings端点的请求路径修改为urlMappingsmanagement.endpoints.web.path-mapping.mappings=request_mappings暴露部分端点management.endpoints.web.exposure.include=info,health,be......
  • SpringCloud实例
    前言:此文档是跟着课程来的,主要是为了熟悉SpringCloud和kubernetes是怎么结合的,后续用在测试cicd流水线上。1.基础环境1.1.java环境配置jdk1.8链接:下载mkdir-p/usr/local/src/jdk; cd/usr/local/src/jdktar-zxvfjdk-8u221-linux-x64.tar.gz-C/usr/localvim/e......
  • SpringCloud gatewayeFilter之一
    1、AddRequestHeaderGatewayFilterAddRequestHeaderGatewayFilter采用名称和值参数。例如:spring:cloud:gateway:enabled:trueroutes:-id:Goods-Server#路由id,唯一标识uri:lb://producerpredicates:......