Files
fizz-gateway-node/docs/guide/plugin/index.html

126 lines
30 KiB
HTML
Raw Normal View History

2020-09-09 14:42:18 +08:00
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>插件开发 | Fizz Gateway</title>
<meta name="generator" content="VuePress 1.5.2">
<meta name="description" content="">
2020-11-09 11:57:42 +08:00
<link rel="preload" href="/assets/css/0.styles.34d67128.css" as="style"><link rel="preload" href="/assets/js/app.86b5ae26.js" as="script"><link rel="preload" href="/assets/js/2.5b001851.js" as="script"><link rel="preload" href="/assets/js/29.60b7285b.js" as="script"><link rel="prefetch" href="/assets/js/10.b57afcaa.js"><link rel="prefetch" href="/assets/js/11.21242c7f.js"><link rel="prefetch" href="/assets/js/12.61089982.js"><link rel="prefetch" href="/assets/js/13.fdb2bea3.js"><link rel="prefetch" href="/assets/js/14.62d9a88b.js"><link rel="prefetch" href="/assets/js/15.0358b10e.js"><link rel="prefetch" href="/assets/js/16.43a475d2.js"><link rel="prefetch" href="/assets/js/17.32fa8ea0.js"><link rel="prefetch" href="/assets/js/18.603a235b.js"><link rel="prefetch" href="/assets/js/19.5c4af839.js"><link rel="prefetch" href="/assets/js/20.1bf2bcbb.js"><link rel="prefetch" href="/assets/js/21.dca6f5c4.js"><link rel="prefetch" href="/assets/js/22.db62cc12.js"><link rel="prefetch" href="/assets/js/23.5b796ecf.js"><link rel="prefetch" href="/assets/js/24.72fe0b8b.js"><link rel="prefetch" href="/assets/js/25.bbf8bff1.js"><link rel="prefetch" href="/assets/js/26.70321f43.js"><link rel="prefetch" href="/assets/js/27.505a813e.js"><link rel="prefetch" href="/assets/js/28.cdddd7aa.js"><link rel="prefetch" href="/assets/js/3.a51774e3.js"><link rel="prefetch" href="/assets/js/30.0222f21c.js"><link rel="prefetch" href="/assets/js/4.7d5f245c.js"><link rel="prefetch" href="/assets/js/5.a59b20e1.js"><link rel="prefetch" href="/assets/js/6.e883523c.js"><link rel="prefetch" href="/assets/js/7.00dd2642.js"><link rel="prefetch" href="/assets/js/8.645ad4e8.js"><link rel="prefetch" href="/assets/js/9.9eb9244c.js">
<link rel="stylesheet" href="/assets/css/0.styles.34d67128.css">
2020-09-09 14:42:18 +08:00
</head>
<body>
2020-11-09 11:57:42 +08:00
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">Fizz Gateway</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
2020-09-09 14:42:18 +08:00
首页
2020-11-09 11:57:42 +08:00
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
2020-09-09 14:42:18 +08:00
使用文档
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
查看源码
2020-11-09 11:57:42 +08:00
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">
2020-09-09 14:42:18 +08:00
首页
2020-11-09 11:57:42 +08:00
</a></div><div class="nav-item"><a href="/guide/intro/" class="nav-link">
2020-09-09 14:42:18 +08:00
使用文档
</a></div> <a href="https://github.com/wehotel/fizz-gateway-community" target="_blank" rel="noopener noreferrer" class="repo-link">
查看源码
2020-11-09 11:57:42 +08:00
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>Fizz简介</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/intro/" class="sidebar-link">什么是Fizz网关</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/intro/#什么是fizz网关" class="sidebar-link">什么是Fizz网关</a></li><li class="sidebar-sub-header"><a href="/guide/intro/#fizz的设计" class="sidebar-link">Fizz的设计</a></li><li class="sidebar-sub-header"><a href="/guide/intro/#产品特性" class="sidebar-link">产品特性</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>安装部署</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/installation/" class="sidebar-link">安装</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/installation/#安装依赖" class="sidebar-link">安装依赖</a></li><li class="sidebar-sub-header"><a href="/guide/installation/#安装fizz" class="sidebar-link">安装Fizz</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>路由转发</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/proxy/" class="sidebar-link">路由转发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/proxy/#路由转发介绍" class="sidebar-link">路由转发介绍</a></li><li class="sidebar-sub-header"><a href="/guide/proxy/#接入路由转发" class="sidebar-link">接入路由转发</a></li></ul></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>服务编排</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/aggregate/" class="sidebar-link">服务编排介绍</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/aggregate/#什么是服务编排" class="sidebar-link">什么是服务编排</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#举例说明" class="sidebar-link">举例说明</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#服务编排架构" class="sidebar-link">服务编排架构</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/#适用场景" class="sidebar-link">适用场景</a></li></ul></li><li><a href="/guide/aggregate/overview.html" class="sidebar-link">步骤总览</a></li><li><a href="/guide/aggregate/configuration.html" class="sidebar-link">服务编排配置</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#创建服务" class="sidebar-link">创建服务</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#创建聚合接口" class="sidebar-link">创建聚合接口</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置输入" class="sidebar-link">配置输入</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置校验结果" class="sidebar-link">配置校验结果</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置步骤" class="sidebar-link">配置步骤</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#配置输出" class="sidebar-link">配置输出</a></li><li class="sidebar-sub-header"><a href="/guide/aggregate/configuration.html#脚本-2" class="sidebar-link">脚本</a></li><li class="sidebar-sub-header"><a hr
2020-09-09 14:42:18 +08:00
1、类似spring的WebFilter是fizz内部的WebFilter由fizz调度<br>
2、对不同的请求可配置不同的上下文参数可通过manager完成配置<br>
3、若有多个插件当前插件可获取前面插件的执行结果。</p> <p>插件的开发和应用分gateway开发、manager配置两部分下面以一个例子依次介绍。</p> <h2 id="gateway开发"><a href="#gateway开发" class="header-anchor">#</a> gateway开发</h2> <div class="language-java extra-class"><pre class="language-java"><code> 实现
<span class="token keyword">public</span> <span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">PluginFilter</span> <span class="token punctuation">{</span>
<span class="token keyword">public</span> <span class="token keyword">abstract</span> <span class="token class-name">Mono</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Void</span><span class="token punctuation">&gt;</span></span> <span class="token function">doFilter</span><span class="token punctuation">(</span><span class="token class-name">ServerWebExchange</span> exchange<span class="token punctuation">,</span> <span class="token class-name">Map</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">Object</span><span class="token punctuation">&gt;</span></span> config<span class="token punctuation">,</span> <span class="token class-name">String</span> fixedConfig<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
即定义了一个插件。
比如
<span class="token annotation punctuation">@Component</span><span class="token punctuation">(</span><span class="token class-name">TestPluginFilter</span><span class="token punctuation">.</span>TEST_PLUGIN_FILTER<span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">TestPluginFilter</span> <span class="token keyword">extends</span> <span class="token class-name">PluginFilter</span> <span class="token punctuation">{</span>
<span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">Logger</span> log <span class="token operator">=</span> <span class="token class-name">LoggerFactory</span><span class="token punctuation">.</span><span class="token function">getLogger</span><span class="token punctuation">(</span><span class="token class-name">TestPluginFilter</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">String</span> TEST_PLUGIN_FILTER <span class="token operator">=</span> <span class="token string">&quot;testPlugin&quot;</span><span class="token punctuation">;</span>
<span class="token annotation punctuation">@Override</span>
<span class="token keyword">public</span> <span class="token class-name">Mono</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Void</span><span class="token punctuation">&gt;</span></span> <span class="token function">doFilter</span><span class="token punctuation">(</span><span class="token class-name">ServerWebExchange</span> exchange<span class="token punctuation">,</span> <span class="token class-name">Map</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">Object</span><span class="token punctuation">&gt;</span></span> config<span class="token punctuation">,</span> <span class="token class-name">String</span> fixedConfig<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">String</span> rid <span class="token operator">=</span> exchange<span class="token punctuation">.</span><span class="token function">getRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Boolean</span> logReqId <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token class-name">Boolean</span><span class="token punctuation">)</span> config<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">&quot;logReqId&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 是否记录请求id日志可通过manager配置</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>logReqId <span class="token operator">==</span> <span class="token keyword">null</span> <span class="token operator">||</span> logReqId<span class="token punctuation">)</span> <span class="token punctuation">{</span>
log<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span>exchange<span class="token punctuation">.</span><span class="token function">getRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getURI</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">&quot; 的请求id: &quot;</span> <span class="token operator">+</span> rid<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token class-name">Boolean</span> appendFizzRsv <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token class-name">Boolean</span><span class="token punctuation">)</span> config<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">&quot;appendFizzRsv&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>appendFizzRsv <span class="token operator">==</span> <span class="token keyword">null</span> <span class="token operator">||</span> appendFizzRsv<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">WebUtils</span><span class="token punctuation">.</span><span class="token function">appendHeader</span><span class="token punctuation">(</span>exchange<span class="token punctuation">,</span> <span class="token string">&quot;FIZZ-RSV&quot;</span><span class="token punctuation">,</span> rid<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> <span class="token class-name">WebUtils</span><span class="token punctuation">.</span><span class="token function">transmitSuccessFilterResultAndEmptyMono</span><span class="token punctuation">(</span>exchange<span class="token punctuation">,</span> TEST_PLUGIN_FILTER<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 保存插件执行结果,并返回</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
这个插件插件必须是一个spring的<span class="token class-name">Component</span>或子注解且要有id这个插件的id是testPlugin它实现了两个功能记录请求id日志转发请求时添加FIZZ<span class="token operator">-</span>RSV请求头并且功能是可打开或关闭的。
另外可通过:
<span class="token class-name">WebUtils</span><span class="token punctuation">.</span><span class="token function">getPrevFilterResult</span><span class="token punctuation">(</span>exchange<span class="token punctuation">)</span><span class="token punctuation">;</span> 获取上一个插件的执行结果,
<span class="token class-name">WebUtils</span><span class="token punctuation">.</span><span class="token function">getFilterResult</span><span class="token punctuation">(</span>exchange<span class="token punctuation">,</span> <span class="token string">&quot;plugin.id&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 获取已执行的任意一个插件的执行结果。
</code></pre></div><h2 id="manager配置"><a href="#manager配置" class="header-anchor">#</a> manager配置</h2> <p>1、定义插件</p> <div class="language-sql extra-class"><pre class="language-sql"><code> 在插件表中,定义上面的插件:
<span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> <span class="token punctuation">`</span>tb_plugin<span class="token punctuation">`</span> <span class="token punctuation">(</span><span class="token punctuation">`</span>eng_name<span class="token punctuation">`</span><span class="token punctuation">,</span> <span class="token punctuation">`</span>chn_name<span class="token punctuation">`</span><span class="token punctuation">,</span> <span class="token punctuation">`</span>config<span class="token punctuation">`</span><span class="token punctuation">,</span> <span class="token punctuation">`</span><span class="token keyword">order</span><span class="token punctuation">`</span><span class="token punctuation">)</span>
<span class="token keyword">VALUES</span>
<span class="token punctuation">(</span>
<span class="token string">'testPlugin'</span><span class="token punctuation">,</span>
<span class="token string">'测试插件'</span><span class="token punctuation">,</span>
<span class="token string">'[{\&quot;field\&quot;:\&quot;logReqId\&quot;,\&quot;label\&quot;:\&quot;打印请求id日志\&quot;,\&quot;component\&quot;:\&quot;radio\&quot;,\&quot;dataType\&quot;:\&quot;boolean\&quot;,\&quot;default\&quot;:false,\&quot;options\&quot;:[{\&quot;label\&quot;:\&quot;是\&quot;,\&quot;value\&quot;:true},{\&quot;label\&quot;:\&quot;否\&quot;,\&quot;value\&quot;:false}]},{\&quot;field\&quot;:\&quot;appendFizzRsv\&quot;,\&quot;label\&quot;:\&quot;添加fizzRsv请求头\&quot;,\&quot;component\&quot;:\&quot;radio\&quot;,\&quot;dataType\&quot;:\&quot;boolean\&quot;,\&quot;default\&quot;:false,\&quot;options\&quot;:[{\&quot;label\&quot;:\&quot;是\&quot;,\&quot;value\&quot;:true},{\&quot;label\&quot;:\&quot;否\&quot;,\&quot;value\&quot;:false}]}]'</span><span class="token punctuation">,</span>
<span class="token number">250</span>
<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><div class="language-json extra-class"><pre class="language-json"><code> eng_name为插件的idchn_name为插件中文名order为插件的执行顺序也是插件在界面上的显示顺序。
config
<span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;field&quot;</span><span class="token operator">:</span><span class="token string">&quot;logReqId&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;打印请求id日志&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;component&quot;</span><span class="token operator">:</span><span class="token string">&quot;radio&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;dataType&quot;</span><span class="token operator">:</span><span class="token string">&quot;boolean&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;default&quot;</span><span class="token operator">:</span><span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token property">&quot;options&quot;</span><span class="token operator">:</span><span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;value&quot;</span><span class="token operator">:</span><span class="token boolean">true</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;value&quot;</span><span class="token operator">:</span><span class="token boolean">false</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;field&quot;</span><span class="token operator">:</span><span class="token string">&quot;appendFizzRsv&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;添加fizzRsv请求头&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;component&quot;</span><span class="token operator">:</span><span class="token string">&quot;radio&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;dataType&quot;</span><span class="token operator">:</span><span class="token string">&quot;boolean&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;default&quot;</span><span class="token operator">:</span><span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token property">&quot;options&quot;</span><span class="token operator">:</span><span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;value&quot;</span><span class="token operator">:</span><span class="token boolean">true</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;label&quot;</span><span class="token operator">:</span><span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;value&quot;</span><span class="token operator">:</span><span class="token boolean">false</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
前端据此生成插件的配置表单,具体参前端说明。
</code></pre></div><p>2、应用插件</p> <p>如对
2020-11-09 11:57:42 +08:00
<img src="/xapi.png" alt=""></p> <p>接口应用插件:
<img src="/test-plugin.png" alt=""></p> <p>上面配置的&quot;打印请求id日志&quot;&quot;添加fizzRsv请求头&quot;,对应</p> <div class="language-java extra-class"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token class-name">Mono</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Void</span><span class="token punctuation">&gt;</span></span> <span class="token function">doFilter</span><span class="token punctuation">(</span><span class="token class-name">ServerWebExchange</span> exchange<span class="token punctuation">,</span> <span class="token class-name">Map</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">Object</span><span class="token punctuation">&gt;</span></span> config<span class="token punctuation">,</span> <span class="token class-name">String</span> fixedConfig<span class="token punctuation">)</span>
</code></pre></div><p>中config的logReqId和appendFizzRsv key。</p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">2020-11-9 11:50</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
2020-09-09 14:42:18 +08:00
2020-11-09 11:57:42 +08:00
<a href="/guide/aggregate/configuration.html" class="prev">
2020-09-09 14:42:18 +08:00
服务编排配置
2020-11-09 11:57:42 +08:00
</a></span> <span class="next"><a href="/guide/benchmark/">
2020-09-09 14:42:18 +08:00
benchmark
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
2020-11-09 11:57:42 +08:00
<script src="/assets/js/app.86b5ae26.js" defer></script><script src="/assets/js/2.5b001851.js" defer></script><script src="/assets/js/29.60b7285b.js" defer></script>
2020-09-09 14:42:18 +08:00
</body>
</html>