可以用在限时抢购的一些场景中。
时间匹配 - 图1

  1. spring:
  2. cloud:
  3. gateway:
  4. #设置路由:路由id、路由到微服务的uri、断言
  5. routes:
  6. - id: order_route #路由ID,全局唯一
  7. uri: http://localhost:8020 #目标微服务的请求地址和端口
  8. predicates:
  9. # 测试:http://localhost:8888/order/findOrderByUserId/1
  10. # 匹配在指定的日期时间之后发生的请求 入参是ZonedDateTime类型
  11. - After=2021-01-31T22:22:07.783+08:00[Asia/Shanghai]

获取ZonedDateTime类型的指定日期时间

  1. ZonedDateTime zonedDateTime = ZonedDateTime.now();//默认时区
  2. // 用指定时区获取当前时间
  3. ZonedDateTime zonedDateTime2 = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));

代码地址

https://gitee.com/zjj19941/ZJJ_Neaten5.10/tree/master/ZJJ_Gateway/demo03

演示

yaml配置:

  1. predicates:
  2. # #Path路径匹配
  3. - Path=/order/**
  4. - After=2022-02-03T12:45:09.439+08:00[Asia/Shanghai]

启动下面两个服务
MallOrderApplication
MallGatewayApplication

postman发起请求: http://localhost:8888/order/findOrderByUserId/1

发现在12点44分访问的时候报404,
image.png

image.png
在12点45分访问就能访问通了

image.png

image.png