原文

Ocelot可以通过header的形式发送一个requestid。ocelot会将这个requestid转发到下游服务。

如果在日志配置中设置了IncludeScopestrue,那么request id会打在日志里面。

可以通过两种方式使用requestid。

1.Global - 配置如下GlobalConfiguration。这将作用于所有的请求

  1. "GlobalConfiguration": {
  2. "RequestIdKey": "OcRequestId"
  3. }

推荐使用GlobalConfiguration,除非你想为一个ReRoute专门指定requestid。

2. ReRoute - ReRoute的优先级别比Global高。添加下面的配置到一个ReRoute下,它将覆盖GlobalConfiguration里面的requestid。

  1. "RequestIdKey": "OcRequestId"

下面是日志界别为Debug的时候的日志信息:

  1. dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0]
  2. requestId: asdf, previousRequestId: no previous request id, message: ocelot pipeline started,
  3. dbug: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
  4. requestId: asdf, previousRequestId: no previous request id, message: upstream url path is {upstreamUrlPath},
  5. dbug: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
  6. requestId: asdf, previousRequestId: no previous request id, message: downstream template is {downstreamRoute.Data.ReRoute.DownstreamPath},
  7. dbug: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
  8. requestId: asdf, previousRequestId: no previous request id, message: EndpointRateLimiting is not enabled for Ocelot.Values.PathTemplate,
  9. dbug: Ocelot.Authorisation.Middleware.AuthorisationMiddleware[0]
  10. requestId: 1234, previousRequestId: asdf, message: /posts/{postId} route does not require user to be authorised,
  11. dbug: Ocelot.DownstreamUrlCreator.Middleware.DownstreamUrlCreatorMiddleware[0]
  12. requestId: 1234, previousRequestId: asdf, message: downstream url is {downstreamUrl.Data.Value},
  13. dbug: Ocelot.Request.Middleware.HttpRequestBuilderMiddleware[0]
  14. requestId: 1234, previousRequestId: asdf, message: setting upstream request,
  15. dbug: Ocelot.Requester.Middleware.HttpRequesterMiddleware[0]
  16. requestId: 1234, previousRequestId: asdf, message: setting http response message,
  17. dbug: Ocelot.Responder.Middleware.ResponderMiddleware[0]
  18. requestId: 1234, previousRequestId: asdf, message: no pipeline errors, setting and returning completed response,
  19. dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0]
  20. requestId: 1234, previousRequestId: asdf, message: ocelot pipeline finished,

[译]Ocelot - Request Id / Correlation Id的更多相关文章

  1. [译]Ocelot - Request Aggregation

    原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.jso ...

  2. [译]Ocelot - Big Picture

    原文 目录 Big Picture Getting Started Configuration Routing Request Aggregation Service Discovery Authen ...

  3. kafka producer生产数据到kafka异常:Got error produce response with correlation id 16 on topic-partition...Error: NETWORK_EXCEPTION

      kafka producer生产数据到kafka异常:Got error produce response with correlation id 16 on topic-partition... ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十六)Structured Streaming:WARN clients.NetworkClient: Error while fetching metadata with correlation id 1 : {my-topic=LEADER_NOT_AVAILABLE}

    问题描述: 我之前使用kafka的命令删除了改topic: ./kafka-topics.sh --delete --zookeeper [zookeeper server]  --topic [to ...

  5. 报错:Error while fetching metadata with correlation id 67 : {alarmHis=LEADER_NOT_AVAILABLE}

    报错背景: 单机安装了kafka,创建完成主题,启动生产者的时候产生报错现象.报错时持续不断打印日志信息. 报错现象: [-- ::,] WARN [Producer clientId=console ...

  6. jQuery选择器中,通配符[id^='code']input[id$='code'][id*='code']

     1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']&qu ...

  7. PHP三元运算符 isset($_GET['id']) ? $_GET['id'] : ”

    $id = isset($_GET['id']) ? $_GET['id'] : ''; ?> 这是一个php的三元运算符 (条件) ? (值1):(值2); 解释:如果条件成立(为真),则执行 ...

  8. 一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现。

    一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现.

  9. Android中@id与@+id区别

    Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...

随机推荐

  1. IDEA包名显示设置

    项目结构视图右上角那个齿轮 选择[Compact Empty Middle Packages],包会合并显示 [Hide Empty Middle Packages]去掉前面的√,不分层级显示

  2. qemu 系列

    一.. qemu uboot 1. 首先安装交叉编译器,执行: sudo apt-get install gcc-arm-linux-gnueabi        2. 下载U-Boot源文件: ht ...

  3. 前端面试回顾---javascript的面向对象

    转:https://segmentfault.com/a/1190000011061136 前言 前一阵面试,过程中发现问到一些很基础的问题时候,自己并不能很流畅的回答出来.或者遇到一些基础知识的应用 ...

  4. 5000量子位支持量子编程,D-Wave推出下一代量子计算平台计划

    5000量子位支持量子编程,D-Wave推出下一代量子计算平台计划 近日,全球量子商用化重要参与者 D-Wave 公司又有大动作:推出其5000量子比特量子计算的发展蓝图.D-Wave 下一代量子计算 ...

  5. 苹果绿RGB值

    ESL的值为:85,123,205 RGB的值为:199,237,204 ESL和RGB只需填一个即可,另一个会自动调整~

  6. 初识服务发现及Consul框架的简单使用

    初识服务发现及Consul框架的简单使用   1.什么是服务发现? 服务发现组件记录了(大规模)分布式系统中所有服务的信息,人们或者其它服务可以据此找到这些服务. DNS 就是一个简单的例子. 当然, ...

  7. wxWidgets 和 QT 之间的选择

    (非原创,网络摘抄) 跨平台的C++ GUI工具库很多,可是应用广泛的也就那么几个,Qt.wxWidgets便是其中的翘楚这里把GTK+排除在外,以C实现面向对象,上手相当困难,而且Windows平台 ...

  8. python3 json模块

    import json '''把python对象转化为json串(字符串), ensure_ascii处理中文乱码'''dic = {"复联4": "好看吗", ...

  9. 一款DMA性能优化记录:异步传输和指定实时信号做async IO

    关键词:DMA.sync.async.SIGIO.F_SETSIG. DMA本身用于减轻CPU负担,进行CPU off-load搬运工作. 在DMA驱动内部实现有同步和异步模式,异步模式使用dma_a ...

  10. Java 200+ 面试题补充 ThreadLocal 模块

    让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致. 本文是前文<Java 最常见的 200+ 面试题>的第一个补充模块. 1.ThreadLocal 是什么 ...