我有一个基于netflix Zuul的代理服务。对于任何日志,从我的自定义过滤器或Zuul内置过滤器,我想有一个名为Flow-Id的请求标头作为我的日志的一部分。我可以通过使用预过滤器在MDC上下文中设置此标头的值来实现此目的。但这只适用于所有过滤器都在同一个线程中执行的情况。
一个请求的所有Zuul过滤器是否都在同一个线程中执行? 当这个请求仍在进行中时,这个线程会运行其他任何东西吗?
答案 0 :(得分:2)
我查看了代码,发现Zuul代理正在使用servlet。 Spring spring将这个servlet包装在ServletWrappingController中。
因此,为了回答我自己的问题,所有过滤器都在一个线程中执行。
为了确保尽可能早地设置MDC上下文,我在servlet过滤器中添加了一个spring bean。