This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch cn-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/cn-site by this push:
new d84ae74fca deploy: 63ffb84035b7fca0409639f21f4148d2238750a2
d84ae74fca is described below
commit d84ae74fca5bef995b84a992011457326142e9c0
Author: AlbumenJ <[email protected]>
AuthorDate: Sun Jun 18 05:43:23 2023 +0000
deploy: 63ffb84035b7fca0409639f21f4148d2238750a2
---
sitemap.xml | 2 +-
.../protocol/triple/guide/index.html | 362 ++++++++++-----------
.../reference-manual/protocol/triple/index.xml | 152 ++++-----
.../protocol/triple/migration/index.html | 11 +-
zh-cn/sitemap.xml | 2 +-
5 files changed, 264 insertions(+), 265 deletions(-)
diff --git a/sitemap.xml b/sitemap.xml
index 03e687d2ff..76a80e6123 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-18T13:38:13+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-18T13:38:36+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/index.html
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/index.html
index 19d8e92962..6399076200 100644
---
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/index.html
+++
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=canonical
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta
charset=utf-8><meta name=viewport [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=canonical
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta
charset=utf-8><meta name=viewport [...]
<script>var
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function
gtag(){dataLayer.push(arguments)}gtag("js",new
Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link
rel=preload
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
as=style><link
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js
integrity="sha256-9/a [...]
<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta
name=theme-color content="#326ce5"><link rel=stylesheet
href=/css/feature-states.css><meta name=description content="协议使用方式"><meta
property="og:description" content="协议使用方式"><meta name=twitter:description
content="协议使用方式"><meta property="og:url"
content="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide/"><meta
property="og:title" content="协议使用方式"><meta name=twit [...]
<link href=/css/community.css rel=stylesheet><link href=/css/contactus.css
rel=stylesheet><link href=/css/language.css rel=stylesheet><script
src=/js/script.js></script></head><body class="td-page
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="
[...]
@@ -670,213 +670,213 @@
<label for=m-zh-cnoverviewreferenceprotocols-check><a
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0
td-sidebar-link td-sidebar-link__section"
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul
class="ul-3 foldable"><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child"
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox
id=m-zh-cnoverviewreferenceprotocolstriple-check>
<label for=m-zh-cnoverviewreferenceprotocolstriple-check><a
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范"
class="align-left pl-0 td-sidebar-link td-sidebar-link__page"
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child"
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox
id=m-zh-cnoverviewreferenceprotocolstcp-check>
<label for=m-zh-cnoverviewreferenceprotocolstcp-check><a
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0
td-sidebar-link td-sidebar-link__page"
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child"
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0
td-sidebar-link td-sidebar-link__page"
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a
href=https://cn.dubbo.apache.org/zh-c [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0
td-sidebar-link td-sidebar-link__page"
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a
href=https://cn.dubbo.apache.org/zh-c [...]
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> java_multiple_files <span
style=color:#719e07>=</span> <span style=color:#cb4b16>true</span>;
-</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> java_package <span
style=color:#719e07>=</span> <span
style=color:#2aa198>"org.apache.dubbo.hello"</span>;
-</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> java_outer_classname <span
style=color:#719e07>=</span> <span
style=color:#2aa198>"HelloWorldProto"</span>;
-</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> objc_class_prefix <span
style=color:#719e07>=</span> <span style=color:#2aa198>"HLW"</span>;
+</span></span><span style=display:flex><span> <span
style=color:#719e07>option</span> java_multiple_files <span
style=color:#719e07>=</span> <span style=color:#cb4b16>true</span>;
+</span></span><span style=display:flex><span> <span
style=color:#719e07>option</span> java_package <span
style=color:#719e07>=</span> <span
style=color:#2aa198>"org.apache.dubbo.hello"</span>;
+</span></span><span style=display:flex><span> <span
style=color:#719e07>option</span> java_outer_classname <span
style=color:#719e07>=</span> <span
style=color:#2aa198>"HelloWorldProto"</span>;
+</span></span><span style=display:flex><span> <span
style=color:#719e07>option</span> objc_class_prefix <span
style=color:#719e07>=</span> <span style=color:#2aa198>"HLW"</span>;
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#719e07>package</span> helloworld;
+</span></span><span style=display:flex><span> <span
style=color:#719e07>package</span> helloworld;
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75>// The
request message containing the user's name.
-</span></span></span><span style=display:flex><span><span
style=color:#586e75></span><span style=color:#268bd2>message</span> <span
style=color:#268bd2>HelloRequest</span> {
-</span></span><span style=display:flex><span> <span
style=color:#dc322f>string</span> name <span style=color:#719e07>=</span> <span
style=color:#2aa198>1</span>;
-</span></span><span style=display:flex><span>}
+</span></span><span style=display:flex><span> <span style=color:#586e75>//
The request message containing the user's name.
+</span></span></span><span style=display:flex><span><span
style=color:#586e75></span> <span style=color:#268bd2>message</span> <span
style=color:#268bd2>HelloRequest</span> {
+</span></span><span style=display:flex><span> <span
style=color:#dc322f>string</span> name <span style=color:#719e07>=</span> <span
style=color:#2aa198>1</span>;
+</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#586e75>// The
response message containing the greetings
-</span></span></span><span style=display:flex><span><span
style=color:#586e75></span><span style=color:#268bd2>message</span> <span
style=color:#268bd2>HelloReply</span> {
-</span></span><span style=display:flex><span> <span
style=color:#dc322f>string</span> <span style=color:#268bd2>message</span>
<span style=color:#719e07>=</span> <span style=color:#2aa198>1</span>;
-</span></span><span style=display:flex><span>}
-</span></span></code></pre></div></li><li><p>添加编译 protobuf 的 extension 和
plugin (以 maven 为例)</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span> <span
style=color:#268bd2><extensions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><extension></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>kr.motd.maven<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>os-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>1.6.1<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></extension></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></extensions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><plugins></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><plugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocArtifact></span>com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}<span
style=color:#268bd2></protocArtifact></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><pluginId></span>triple-java<span
style=color:#268bd2></pluginId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDirectory></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDirectory></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><executions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goal></span>compile<span
style=color:#268bd2></goal></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goal></span>test-compile<span
style=color:#268bd2></goal></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></plugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></plugins></span>
-</span></span></code></pre></div></li><li><p>构建/ 编译生成 protobuf Message
类</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
install
-</span></span></code></pre></div></li></ol><h3 id=unary-方式>Unary 方式</h3><ol
start=4><li><p>编写 Java 接口</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloReply<span
style=color:#719e07>;</span>
-</span></span><span style=display:flex><span><span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloRequest<span
style=color:#719e07>;</span>
+</span></span><span style=display:flex><span> <span style=color:#586e75>//
The response message containing the greetings
+</span></span></span><span style=display:flex><span><span
style=color:#586e75></span> <span style=color:#268bd2>message</span> <span
style=color:#268bd2>HelloReply</span> {
+</span></span><span style=display:flex><span> <span
style=color:#dc322f>string</span> <span style=color:#268bd2>message</span>
<span style=color:#719e07>=</span> <span style=color:#2aa198>1</span>;
+</span></span><span style=display:flex><span> }
+</span></span></code></pre></div><ol start=2><li>添加编译 protobuf 的 extension 和
plugin (以 maven 为例)</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span> <span
style=color:#268bd2><extensions></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><extension></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>kr.motd.maven<span
style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>os-maven-plugin<span
style=color:#268bd2></artifactId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>1.6.1<span
style=color:#268bd2></version></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></extension></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></extensions></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><plugins></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><plugin></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocArtifact></span>com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}<span
style=color:#268bd2></protocArtifact></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><pluginId></span>triple-java<span
style=color:#268bd2></pluginId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDirectory></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDirectory></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><executions></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><execution></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><goals></span>
+</span></span><span style=display:flex><span>
<span style=color:#268bd2><goal></span>compile<span
style=color:#268bd2></goal></span>
+</span></span><span style=display:flex><span>
<span style=color:#268bd2><goal></span>test-compile<span
style=color:#268bd2></goal></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></goals></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></plugin></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></plugins></span>
+</span></span></code></pre></div><ol start=3><li>构建/ 编译生成 protobuf Message
类</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
install
+</span></span></code></pre></div><h3 id=unary-方式>Unary 方式</h3><ol
start=4><li>编写 Java 接口</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloReply<span
style=color:#719e07>;</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloRequest<span
style=color:#719e07>;</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span>
<span style=color:#268bd2>IGreeter</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span style=color:#586e75>/**
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* <pre>
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* Sends a greeting
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* </pre>
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
*/</span>
-</span></span><span style=display:flex><span> HelloReply <span
style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>HelloRequest request<span
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span>
<span style=color:#268bd2>IGreeter</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#586e75>/**
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* <pre>
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* Sends a greeting
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* </pre>
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
*/</span>
+</span></span><span style=display:flex><span> HelloReply <span
style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>HelloRequest request<span
style=color:#719e07>);</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>创建 Provider</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> ar [...]
-</span></span><span style=display:flex><span> ServiceConfig<span
style=color:#719e07><</span>IGreeter<span style=color:#719e07>></span>
service <span style=color:#719e07>=</span> <span style=color:#719e07>new</span>
ServiceConfig<span style=color:#719e07><>();</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRef<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> IGreeter1Impl<span
style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> <span
style=color:#586e75>// 这里需要显示声明使用的协议为triple
-</span></span></span><span style=display:flex><span><span
style=color:#586e75></span> service<span
style=color:#719e07>.</span>setProtocol<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> ProtocolConfig<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>,</span> <span
style=color:#2aa198>50051</span><span style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"demo-provider"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>export<span style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo service
started"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>new</span> CountDownLatch<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>).</span>await<span style=color:#719e07>();</span>
</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>创建 Consumer</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> args<s
[...]
-</span></span><span style=display:flex><span> ReferenceConfig<span
style=color:#719e07><</span>IGreeter<span style=color:#719e07>></span>
ref <span style=color:#719e07>=</span> <span style=color:#719e07>new</span>
ReferenceConfig<span style=color:#719e07><>();</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setCheck<span style=color:#719e07>(</span><span
style=color:#cb4b16>false</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setProtocol<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setLazy<span style=color:#719e07>(</span><span
style=color:#cb4b16>true</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setTimeout<span style=color:#719e07>(</span><span
style=color:#2aa198>100000</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"demo-consumer"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> IGreeter iGreeter <span
style=color:#719e07>=</span> ref<span style=color:#719e07>.</span>get<span
style=color:#719e07>();</span>
+</span></span></code></pre></div><ol start=5><li>创建 Provider</li></ol><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span>
<span style=color:#268bd2>public</span> <span style=color:#268bd2>static</span>
<span style=color:#dc322f>void</span> <span
style=color:#268bd2>main</span><span style=color:#719e07>(</span>String<span
style=color:#719e0 [...]
+</span></span><span style=display:flex><span> ServiceConfig<span
style=color:#719e07><</span>IGreeter<span style=color:#719e07>></span>
service <span style=color:#719e07>=</span> <span style=color:#719e07>new</span>
ServiceConfig<span style=color:#719e07><>();</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRef<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> IGreeter1Impl<span
style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> <span
style=color:#586e75>// 这里需要显示声明使用的协议为triple
+</span></span></span><span style=display:flex><span><span
style=color:#586e75></span> service<span
style=color:#719e07>.</span>setProtocol<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> ProtocolConfig<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>,</span> <span
style=color:#2aa198>50051</span><span style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"demo-provider"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>export<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo service
started"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>new</span> CountDownLatch<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>).</span>await<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span></code></pre></div><ol start=6><li>创建 Consumer</li></ol><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[] [...]
+</span></span><span style=display:flex><span> ReferenceConfig<span
style=color:#719e07><</span>IGreeter<span style=color:#719e07>></span>
ref <span style=color:#719e07>=</span> <span style=color:#719e07>new</span>
ReferenceConfig<span style=color:#719e07><>();</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setCheck<span style=color:#719e07>(</span><span
style=color:#cb4b16>false</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setProtocol<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setLazy<span style=color:#719e07>(</span><span
style=color:#cb4b16>true</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setTimeout<span style=color:#719e07>(</span><span
style=color:#2aa198>100000</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"demo-consumer"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> IGreeter iGreeter <span
style=color:#719e07>=</span> ref<span style=color:#719e07>.</span>get<span
style=color:#719e07>();</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo ref
started"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> HelloReply reply <span
style=color:#719e07>=</span> iGreeter<span
style=color:#719e07>.</span>sayHello<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"name"</span><span style=color:#719e07>)</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> TimeUnit<span
style=color:#719e07>.</span>SECONDS<span style=color:#719e07>.</span>sleep<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"Reply:"</span>
<span style=color:#719e07>+</span> reply<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span
style=color:#719e07>(</span>Throwable t<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> t<span
style=color:#719e07>.</span>printStackTrace<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo ref
started"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> HelloReply reply <span
style=color:#719e07>=</span> iGreeter<span
style=color:#719e07>.</span>sayHello<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"name"</span><span style=color:#719e07>)</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> TimeUnit<span
style=color:#719e07>.</span>SECONDS<span style=color:#719e07>.</span>sleep<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"Reply:"</span>
<span style=color:#719e07>+</span> reply<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span
style=color:#719e07>(</span>Throwable t<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> t<span
style=color:#719e07>.</span>printStackTrace<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>in<span style=color:#719e07>.</span>read<span
style=color:#719e07>();</span>
</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>in<span style=color:#719e07>.</span>read<span
style=color:#719e07>();</span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>运行 Provider 和 Consumer
,可以看到请求正常返回</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>></span> Reply<span
style=color:#719e07>:</span>message<span style=color:#719e07>:</span> <span
style=color:#2aa198>"name"</span>
-</span></span></code></pre></div></li></ol><h3 id=stream-方式>stream 方式</h3><ol
start=8><li><p>编写 Java 接口</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloReply<span
style=color:#719e07>;</span>
-</span></span><span style=display:flex><span><span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloRequest<span
style=color:#719e07>;</span>
+</span></span></code></pre></div><ol start=7><li>运行 Provider 和 Consumer
,可以看到请求正常返回</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>></span> Reply<span
style=color:#719e07>:</span>message<span style=color:#719e07>:</span> <span
style=color:#2aa198>"name"</span>
+</span></span></code></pre></div><h3 id=stream-方式>stream 方式</h3><ol
start=8><li>编写 Java 接口</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloReply<span
style=color:#719e07>;</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>import</span> org.apache.dubbo.hello.HelloRequest<span
style=color:#719e07>;</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span>
<span style=color:#268bd2>IGreeter</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span style=color:#586e75>/**
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* <pre>
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* Sends greeting by stream
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
* </pre>
-</span></span></span><span style=display:flex><span><span style=color:#586e75>
*/</span>
-</span></span><span style=display:flex><span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> <span style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>StreamObserver<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyObserver<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span>
<span style=color:#268bd2>IGreeter</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#586e75>/**
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* <pre>
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* Sends greeting by stream
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
* </pre>
+</span></span></span><span style=display:flex><span><span style=color:#586e75>
*/</span>
+</span></span><span style=display:flex><span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> <span style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>StreamObserver<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyObserver<span style=color:#719e07>);</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>编写实现类</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>IStreamGreeterImpl</span> <span
style=color:#268bd2>implements</span> IStreamGreeter <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span></code></pre></div><ol start=9><li>编写实现类</li></ol><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>IStreamGreeterImpl</span> <span
style=color:#268bd2>implements</span> IStreamGreeter <span
style=color:#719e07>{</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> <span style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>StreamObserver<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyObserver<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> <span style=color:#268bd2>sayHello</span><span
style=color:#719e07>(</span>StreamObserver<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyObserver<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>return</span> <span style=color:#719e07>new</span>
StreamObserver<span style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>>()</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>private</span> List<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyList <span style=color:#719e07>=</span> <span
style=color:#719e07>new</span> ArrayList<span
style=color:#719e07><>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>return</span> <span style=color:#719e07>new</span>
StreamObserver<span style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>>()</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>private</span> List<span
style=color:#719e07><</span>HelloReply<span style=color:#719e07>></span>
replyList <span style=color:#719e07>=</span> <span
style=color:#719e07>new</span> ArrayList<span
style=color:#719e07><>();</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onNext</span><span style=color:#719e07>(</span>HelloRequest
helloRequest<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onNext receive
request name:"</span> <span style=color:#719e07>+</span> helloRequest<span
style=color:#719e07>.</span>getName<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> replyList<span
style=color:#719e07>.</span>add<span
style=color:#719e07>(</span>HelloReply<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setMessage<span style=color:#719e07>(</span><span
style=color:#2aa198>"receive name:"</span> <span
style=color:#719e07>+</span> helloRequest<span
style=color:#719e07>.</span>getName<span style=color:#719e07>())</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onNext</span><span style=color:#719e07>(</span>HelloRequest
helloRequest<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onNext receive
request name:"</span> <span style=color:#719e07>+</span> helloRequest<span
style=color:#719e07>.</span>getName<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> replyList<span
style=color:#719e07>.</span>add<span
style=color:#719e07>(</span>HelloReply<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setMessage<span style=color:#719e07>(</span><span
style=color:#2aa198>"receive name:"</span> <span
style=color:#719e07>+</span> helloRequest<span
style=color:#719e07>.</span>getName<span style=color:#719e07>())</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onError</span><span style=color:#719e07>(</span>Throwable
cause<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onError"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onError<span
style=color:#719e07>(</span>cause<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onError</span><span style=color:#719e07>(</span>Throwable
cause<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onError"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onError<span
style=color:#719e07>(</span>cause<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onCompleted</span><span style=color:#719e07>()</span> <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onComplete receive
request size:"</span> <span style=color:#719e07>+</span> replyList<span
style=color:#719e07>.</span>size<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>for</span> <span style=color:#719e07>(</span>HelloReply
reply <span style=color:#719e07>:</span> replyList<span
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>reply<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onCompleted<span
style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>};</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>创建 Provider</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>StreamProvider</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> args<span
style=color:#719e07>)</span> <span style=color:#268bd2>throws</span>
InterruptedException <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> ServiceConfig<span
style=color:#719e07><</span>IStreamGreeter<span
style=color:#719e07>></span> service <span style=color:#719e07>=</span>
<span style=color:#719e07>new</span> ServiceConfig<span
style=color:#719e07><>();</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IStreamGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRef<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> IStreamGreeterImpl<span
style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setProtocol<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> ProtocolConfig<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>,</span> <span
style=color:#2aa198>50051</span><span style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"stream-provider"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>export<span style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo service
started"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>new</span> CountDownLatch<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>).</span>await<span style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>创建 Consumer</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>StreamConsumer</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> args<span
style=color:#719e07>)</span> <span style=color:#268bd2>throws</span>
InterruptedException<span style=color:#719e07>,</span> IOException <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> ReferenceConfig<span
style=color:#719e07><</span>IStreamGreeter<span
style=color:#719e07>></span> ref <span style=color:#719e07>=</span> <span
style=color:#719e07>new</span> ReferenceConfig<span
style=color:#719e07><>();</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IStreamGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setCheck<span style=color:#719e07>(</span><span
style=color:#cb4b16>false</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setProtocol<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setLazy<span style=color:#719e07>(</span><span
style=color:#cb4b16>true</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setTimeout<span style=color:#719e07>(</span><span
style=color:#2aa198>100000</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"stream-consumer"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://mse-6e9fda00-p.zk.mse.aliyuncs.com:2181"</span><span
style=color:#719e07>));</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> IStreamGreeter iStreamGreeter <span
style=color:#719e07>=</span> ref<span style=color:#719e07>.</span>get<span
style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onCompleted</span><span style=color:#719e07>()</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onComplete receive
request size:"</span> <span style=color:#719e07>+</span> replyList<span
style=color:#719e07>.</span>size<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>for</span> <span style=color:#719e07>(</span>HelloReply
reply <span style=color:#719e07>:</span> replyList<span
style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>reply<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span>
replyObserver<span style=color:#719e07>.</span>onCompleted<span
style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>};</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span></code></pre></div><ol start=10><li>创建 Provider</li></ol><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>StreamProvider</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> args<span
style=color:#719e07>)</span> <span style=color:#268bd2>throws</span>
InterruptedException <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> ServiceConfig<span
style=color:#719e07><</span>IStreamGreeter<span
style=color:#719e07>></span> service <span style=color:#719e07>=</span>
<span style=color:#719e07>new</span> ServiceConfig<span
style=color:#719e07><>();</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IStreamGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRef<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> IStreamGreeterImpl<span
style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setProtocol<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> ProtocolConfig<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>,</span> <span
style=color:#2aa198>50051</span><span style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"stream-provider"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://127.0.0.1:2181"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> service<span
style=color:#719e07>.</span>export<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo service
started"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>new</span> CountDownLatch<span
style=color:#719e07>(</span><span style=color:#2aa198>1</span><span
style=color:#719e07>).</span>await<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span></code></pre></div><ol start=11><li>创建 Consumer</li></ol><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span
style=color:#268bd2>StreamConsumer</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span
style=color:#dc322f>void</span> <span style=color:#268bd2>main</span><span
style=color:#719e07>(</span>String<span style=color:#719e07>[]</span> args<span
style=color:#719e07>)</span> <span style=color:#268bd2>throws</span>
InterruptedException<span style=color:#719e07>,</span> IOException <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> ReferenceConfig<span
style=color:#719e07><</span>IStreamGreeter<span
style=color:#719e07>></span> ref <span style=color:#719e07>=</span> <span
style=color:#719e07>new</span> ReferenceConfig<span
style=color:#719e07><>();</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setInterface<span
style=color:#719e07>(</span>IStreamGreeter<span
style=color:#719e07>.</span>class<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setCheck<span style=color:#719e07>(</span><span
style=color:#cb4b16>false</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setProtocol<span
style=color:#719e07>(</span>CommonConstants<span
style=color:#719e07>.</span>TRIPLE<span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setLazy<span style=color:#719e07>(</span><span
style=color:#cb4b16>true</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setTimeout<span style=color:#719e07>(</span><span
style=color:#2aa198>100000</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setApplication<span
style=color:#719e07>(</span><span style=color:#719e07>new</span>
ApplicationConfig<span style=color:#719e07>(</span><span
style=color:#2aa198>"stream-consumer"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> ref<span
style=color:#719e07>.</span>setRegistry<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> RegistryConfig<span
style=color:#719e07>(</span><span
style=color:#2aa198>"zookeeper://mse-6e9fda00-p.zk.mse.aliyuncs.com:2181"</span><span
style=color:#719e07>));</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>final</span> IStreamGreeter iStreamGreeter <span
style=color:#719e07>=</span> ref<span style=color:#719e07>.</span>get<span
style=color:#719e07>();</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo ref
started"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"dubbo ref
started"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>try</span> <span style=color:#719e07>{</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> streamObserver <span
style=color:#719e07>=</span> iStreamGreeter<span
style=color:#719e07>.</span>sayHello<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> StreamObserver<span
style=color:#719e07><</span>HelloReply<span
style=color:#719e07>>()</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onNext</span><span style=color:#719e07>(</span>HelloReply
reply<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onNext"</span><span style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span>reply<span
style=color:#719e07>.</span>getMessage<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> StreamObserver<span
style=color:#719e07><</span>HelloRequest<span
style=color:#719e07>></span> streamObserver <span
style=color:#719e07>=</span> iStreamGreeter<span
style=color:#719e07>.</span>sayHello<span style=color:#719e07>(</span><span
style=color:#719e07>new</span> StreamObserver<span
style=color:#719e07><</span>HelloReply<span
style=color:#719e07>>()</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onNext</span><span style=color:#719e07>(</span>HelloReply
reply<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onNext"</span><span style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span>reply<span
style=color:#719e07>.</span>getMessage<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onError</span><span style=color:#719e07>(</span>Throwable
throwable<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onError:"</span>
<span style=color:#719e07>+</span> throwable<span
style=color:#719e07>.</span>getMessage<span style=color:#719e07>());</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onError</span><span style=color:#719e07>(</span>Throwable
throwable<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span style=color:#2aa198>"onError:"</span>
<span style=color:#719e07>+</span> throwable<span
style=color:#719e07>.</span>getMessage<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onCompleted</span><span style=color:#719e07>()</span> <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onCompleted"</span><span
style=color:#719e07>);</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>});</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>@Override</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span
style=color:#268bd2>onCompleted</span><span style=color:#719e07>()</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span
style=color:#719e07>(</span><span
style=color:#2aa198>"onCompleted"</span><span
style=color:#719e07>);</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>});</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"tony"</span><span style=color:#719e07>)</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"tony"</span><span style=color:#719e07>)</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"nick"</span><span style=color:#719e07>)</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
+</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onNext<span
style=color:#719e07>(</span>HelloRequest<span
style=color:#719e07>.</span>newBuilder<span style=color:#719e07>()</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>setName<span style=color:#719e07>(</span><span
style=color:#2aa198>"nick"</span><span style=color:#719e07>)</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>.</span>build<span style=color:#719e07>());</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onCompleted<span style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span
style=color:#719e07>(</span>Throwable t<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
-</span></span><span style=display:flex><span> t<span
style=color:#719e07>.</span>printStackTrace<span style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>in<span style=color:#719e07>.</span>read<span
style=color:#719e07>();</span>
-</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
-</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div></li><li><p>运行 Provider 和 Consumer
,可以看到请求正常返回了</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>></span> onNext\
+</span></span><span style=display:flex><span> streamObserver<span
style=color:#719e07>.</span>onCompleted<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span> <span style=color:#719e07>catch</span> <span
style=color:#719e07>(</span>Throwable t<span style=color:#719e07>)</span> <span
style=color:#719e07>{</span>
+</span></span><span style=display:flex><span> t<span
style=color:#719e07>.</span>printStackTrace<span style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> System<span
style=color:#719e07>.</span>in<span style=color:#719e07>.</span>read<span
style=color:#719e07>();</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
+</span></span></code></pre></div><ol start=12><li>运行 Provider 和 Consumer
,可以看到请求正常返回了</li></ol><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-java data-lang=java><span style=display:flex><span><span
style=color:#719e07>></span> onNext\
</span></span><span style=display:flex><span><span
style=color:#719e07>></span> receive name<span
style=color:#719e07>:</span>tony\
</span></span><span style=display:flex><span><span
style=color:#719e07>></span> onNext\
</span></span><span style=display:flex><span><span
style=color:#719e07>></span> receive name<span
style=color:#719e07>:</span>nick\
</span></span><span style=display:flex><span><span
style=color:#719e07>></span> onCompleted
-</span></span></code></pre></div></li></ol><h3
id=其他序列化方式>其他序列化方式</h3><p>省略上文中的 1-3 步,指定 Provider 和 Consumer
使用的协议即可完成协议升级。</p><blockquote><p>本文的示例可以在 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple>triple-samples</a>
找到</p></blockquote><div id=pre-footer><h2>反馈</h2><p
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4
feedback--yes">是</button>
-<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
+</span></span></code></pre></div><h3 id=其他序列化方式>其他序列化方式</h3><p>省略上文中的 1-3 步,指定
Provider 和 Consumer 使用的协议即可完成协议升级。</p><blockquote><p>本文的示例可以在 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple>triple-samples</a>
找到</p></blockquote><div id=pre-footer><h2>反馈</h2><p
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4
feedback--yes">是</button>
+<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
<a
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/guide.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%6
[...]
<a
href="https://github.com/apache/dubbo-website/issues/new?title=%e5%8d%8f%e8%ae%ae%e4%bd%bf%e7%94%a8%e6%96%b9%e5%bc%8f"
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><ul><li><a
href=#protobuf-方式>Protobuf 方式</a></li><li><a href=#unary-方式>Unary
方式</a></li><li><a href=#stream-方式>stream 方式</a></li><li><a
href=#其他序列化方式>其他序列化方式</a></li></ul></li></ul></nav></div></div></div></div><footer
class="bg-dark py-5 row d-print-none footer-margin-0"><div [...]
diff --git
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/index.xml
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/index.xml
index 7080d30753..dc31945e4b 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/index.xml
@@ -413,29 +413,29 @@
<p>在开始前,需要决定服务使用的序列化方式,如果为新服务,推荐使用 protobuf
作为默认序列化,在性能和跨语言上的效果都会更好。如果是原有服务想进行协议升级,Triple 协议也已经支持其他序列化方式,如 Hessian / JSON
等</p>
<h3 id="protobuf-方式">Protobuf 方式</h3>
<ol>
-<li>
-<p>编写 IDL 文件</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-protobuf" data-lang="protobuf"><span
style="display:flex;"><span>syntax <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;proto3&#34;</span>;
+<li>编写 IDL 文件</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-protobuf" data-lang="protobuf"><span
style="display:flex;"><span> syntax <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;proto3&#34;</span>;
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> java_multiple_files <span
style="color:#719e07">=</span> <span style="color:#cb4b16">true</span>;
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> java_package <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;org.apache.dubbo.hello&#34;</span>;
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> java_outer_classname <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;HelloWorldProto&#34;</span>;
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> objc_class_prefix <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;HLW&#34;</span>;
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">option</span> java_multiple_files <span
style="color:#719e07">=</span> <span style="color:#cb4b16">true</span>;
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">option</span> java_package <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;org.apache.dubbo.hello&#34;</span>;
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">option</span> java_outer_classname <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;HelloWorldProto&#34;</span>;
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">option</span> objc_class_prefix <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;HLW&#34;</span>;
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">package</span> helloworld;
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">package</span> helloworld;
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#586e75">// The request message containing the user&#39;s name.
-</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"></span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">HelloRequest</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#586e75">// The request message containing the user&#39;s name.
+</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"></span> <span
style="color:#268bd2">message</span> <span
style="color:#268bd2">HelloRequest</span> {
</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> name <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
-</span></span><span style="display:flex;"><span>}
+</span></span><span style="display:flex;"><span> }
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#586e75">// The response message containing the greetings
-</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"></span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">HelloReply</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#586e75">// The response message containing the greetings
+</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"></span> <span
style="color:#268bd2">message</span> <span
style="color:#268bd2">HelloReply</span> {
</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> <span
style="color:#268bd2">message</span> <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div></li>
-<li>
-<p>添加编译 protobuf 的 extension 和 plugin (以 maven 为例)</p>
+</span></span><span style="display:flex;"><span> }
+</span></span></code></pre></div><ol start="2">
+<li>添加编译 protobuf 的 extension 和 plugin (以 maven 为例)</li>
+</ol>
<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span style="display:flex;"><span>
<span style="color:#268bd2">&lt;extensions&gt;</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;extension&gt;</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;groupId&gt;</span>kr.motd.maven<span
style="color:#268bd2">&lt;/groupId&gt;</span>
@@ -463,20 +463,18 @@
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/executions&gt;</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/plugin&gt;</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/plugins&gt;</span>
-</span></span></code></pre></div></li>
-<li>
-<p>构建/ 编译生成 protobuf Message 类</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span>mvn clean install
-</span></span></code></pre></div></li>
+</span></span></code></pre></div><ol start="3">
+<li>构建/ 编译生成 protobuf Message 类</li>
</ol>
-<h3 id="unary-方式">Unary 方式</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span>mvn clean install
+</span></span></code></pre></div><h3 id="unary-方式">Unary
方式</h3>
<ol start="4">
-<li>
-<p>编写 Java 接口</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloReply<span style="color:#719e07">;</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloRequest<span style="color:#719e07">;</span>
+<li>编写 Java 接口</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloReply<span style="color:#719e07">;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloRequest<span style="color:#719e07">;</span>
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#268bd2">public</span> <span
style="color:#268bd2">interface</span> <span
style="color:#268bd2">IGreeter</span> <span
style="color:#719e07">{</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">public</span> <span
style="color:#268bd2">interface</span> <span
style="color:#268bd2">IGreeter</span> <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span> <span
style="color:#586e75">/**
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> * &lt;pre&gt;
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> * Sends a greeting
@@ -484,10 +482,10 @@
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> */</span>
</span></span><span style="display:flex;"><span> HelloReply
<span style="color:#268bd2">sayHello</span><span
style="color:#719e07">(</span>HelloRequest request<span
style="color:#719e07">);</span>
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>创建 Provider</p>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="5">
+<li>创建 Provider</li>
+</ol>
<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#268bd2">public</span>
<span style="color:#268bd2">static</span> <span
style="color:#dc322f">void</span> <span
style="color:#268bd2">main</span><span
style="color:#719e07">(</span>String<span style="color:#719e07">[ [...]
</span></span><span style="display:flex;"><span>
ServiceConfig<span style="color:#719e07">&lt;</span>IGreeter<span
style="color:#719e07">&gt;</span> service <span
style="color:#719e07">=</span> <span style="color:#719e07">new</span>
ServiceConfig<span style="color:#719e07">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> service<span
style="color:#719e07">.</span>setInterface<span
style="color:#719e07">(</span>IGreeter<span
style="color:#719e07">.</span>class<span
style="color:#719e07">);</span>
@@ -500,10 +498,10 @@
</span></span><span style="display:flex;"><span> System<span
style="color:#719e07">.</span>out<span
style="color:#719e07">.</span>println<span
style="color:#719e07">(</span><span style="color:#2aa198">&#34;dubbo
service started&#34;</span><span style="color:#719e07">);</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">new</span> CountDownLatch<span
style="color:#719e07">(</span><span
style="color:#2aa198">1</span><span
style="color:#719e07">).</span>await<span
style="color:#719e07">();</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>创建 Consumer</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#268bd2">public</span>
<span style="color:#268bd2">static</span> <span
style="color:#dc322f">void</span> <span
style="color:#268bd2">main</span><span
style="color:#719e07">(</span>String<span style="color:#719e07">[] [...]
+</span></span></code></pre></div><ol start="6">
+<li>创建 Consumer</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#268bd2">public</span>
<span style="color:#268bd2">static</span> <span
style="color:#dc322f">void</span> <span
style="color:#268bd2">main</span><span
style="color:#719e07">(</span>String<span style="color:#719e07">[ [...]
</span></span><span style="display:flex;"><span>
ReferenceConfig<span
style="color:#719e07">&lt;</span>IGreeter<span
style="color:#719e07">&gt;</span> ref <span
style="color:#719e07">=</span> <span style="color:#719e07">new</span>
ReferenceConfig<span style="color:#719e07">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> ref<span
style="color:#719e07">.</span>setInterface<span
style="color:#719e07">(</span>IGreeter<span
style="color:#719e07">.</span>class<span
style="color:#719e07">);</span>
</span></span><span style="display:flex;"><span> ref<span
style="color:#719e07">.</span>setCheck<span
style="color:#719e07">(</span><span
style="color:#cb4b16">false</span><span style="color:#719e07">);</span>
@@ -525,21 +523,19 @@
</span></span><span style="display:flex;"><span> t<span
style="color:#719e07">.</span>printStackTrace<span
style="color:#719e07">();</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
</span></span><span style="display:flex;"><span> System<span
style="color:#719e07">.</span>in<span
style="color:#719e07">.</span>read<span
style="color:#719e07">();</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>运行 Provider 和 Consumer ,可以看到请求正常返回</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span
style="color:#719e07">&gt;</span> Reply<span
style="color:#719e07">:</span>message<span
style="color:#719e07">:</span> <span
style="color:#2aa198">&#34;name&#34;</span>
-</span></span></code></pre></div></li>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="7">
+<li>运行 Provider 和 Consumer ,可以看到请求正常返回</li>
</ol>
-<h3 id="stream-方式">stream 方式</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span
style="color:#719e07">&gt;</span> Reply<span
style="color:#719e07">:</span>message<span
style="color:#719e07">:</span> <span
style="color:#2aa198">&#34;name&#34;</span>
+</span></span></code></pre></div><h3 id="stream-方式">stream
方式</h3>
<ol start="8">
-<li>
-<p>编写 Java 接口</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloReply<span style="color:#719e07">;</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloRequest<span style="color:#719e07">;</span>
+<li>编写 Java 接口</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloReply<span style="color:#719e07">;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">import</span>
org.apache.dubbo.hello.HelloRequest<span style="color:#719e07">;</span>
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#268bd2">public</span> <span
style="color:#268bd2">interface</span> <span
style="color:#268bd2">IGreeter</span> <span
style="color:#719e07">{</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">public</span> <span
style="color:#268bd2">interface</span> <span
style="color:#268bd2">IGreeter</span> <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span> <span
style="color:#586e75">/**
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> * &lt;pre&gt;
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> * Sends greeting by stream
@@ -547,11 +543,11 @@
</span></span></span><span style="display:flex;"><span><span
style="color:#586e75"> */</span>
</span></span><span style="display:flex;"><span>
StreamObserver<span
style="color:#719e07">&lt;</span>HelloRequest<span
style="color:#719e07">&gt;</span> <span
style="color:#268bd2">sayHello</span><span
style="color:#719e07">(</span>StreamObserver<span
style="color:#719e07">&lt;</span>HelloReply<span
style="color:#719e07">&gt;</span> replyObserver<span
style="color:#719e07">);</span>
</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>编写实现类</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">IStreamGreeterImpl</span> <span
style="color:#268bd2">implements</span> IStreamGreeter <span
style="color:#719e07">{</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="9">
+<li>编写实现类</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">IStreamGreeterImpl</span> <span
style="color:#268bd2">implements</span> IStreamGreeter <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">@Override</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">public</span> StreamObserver<span
style="color:#719e07">&lt;</span>HelloRequest<span
style="color:#719e07">&gt;</span> <span
style="color:#268bd2">sayHello</span><span
style="color:#719e07">(</span>StreamObserver<span
style="color:#719e07">&lt;</span>HelloReply<span
style="color:#719e07">&gt;</span> replyObserver<span
style="color:#719e07"> [...]
@@ -583,11 +579,11 @@
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">};</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>创建 Provider</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">StreamProvider</span> <span
style="color:#719e07">{</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="10">
+<li>创建 Provider</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">StreamProvider</span> <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">public</span> <span
style="color:#268bd2">static</span> <span
style="color:#dc322f">void</span> <span
style="color:#268bd2">main</span><span
style="color:#719e07">(</span>String<span
style="color:#719e07">[]</span> args<span
style="color:#719e07">)</span> <span
style="color:#268bd2">throws</span> InterruptedException <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span>
ServiceConfig<span
style="color:#719e07">&lt;</span>IStreamGreeter<span
style="color:#719e07">&gt;</span> service <span
style="color:#719e07">=</span> <span style="color:#719e07">new</span>
ServiceConfig<span style="color:#719e07">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> service<span
style="color:#719e07">.</span>setInterface<span
style="color:#719e07">(</span>IStreamGreeter<span
style="color:#719e07">.</span>class<span
style="color:#719e07">);</span>
@@ -599,11 +595,11 @@
</span></span><span style="display:flex;"><span> System<span
style="color:#719e07">.</span>out<span
style="color:#719e07">.</span>println<span
style="color:#719e07">(</span><span style="color:#2aa198">&#34;dubbo
service started&#34;</span><span style="color:#719e07">);</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">new</span> CountDownLatch<span
style="color:#719e07">(</span><span
style="color:#2aa198">1</span><span
style="color:#719e07">).</span>await<span
style="color:#719e07">();</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>创建 Consumer</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">StreamConsumer</span> <span
style="color:#719e07">{</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="11">
+<li>创建 Consumer</li>
+</ol>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span> <span style="color:#268bd2">public</span>
<span style="color:#268bd2">class</span> <span
style="color:#268bd2">StreamConsumer</span> <span
style="color:#719e07">{</span>
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">public</span> <span
style="color:#268bd2">static</span> <span
style="color:#dc322f">void</span> <span
style="color:#268bd2">main</span><span
style="color:#719e07">(</span>String<span
style="color:#719e07">[]</span> args<span
style="color:#719e07">)</span> <span
style="color:#268bd2">throws</span> InterruptedException<span
style="color:#719e07">,</ [...]
</span></span><span style="display:flex;"><span>
ReferenceConfig<span
style="color:#719e07">&lt;</span>IStreamGreeter<span
style="color:#719e07">&gt;</span> ref <span
style="color:#719e07">=</span> <span style="color:#719e07">new</span>
ReferenceConfig<span style="color:#719e07">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span> ref<span
style="color:#719e07">.</span>setInterface<span
style="color:#719e07">(</span>IStreamGreeter<span
style="color:#719e07">.</span>class<span
style="color:#719e07">);</span>
@@ -650,18 +646,16 @@
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
</span></span><span style="display:flex;"><span> System<span
style="color:#719e07">.</span>in<span
style="color:#719e07">.</span>read<span
style="color:#719e07">();</span>
</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
-</span></span><span style="display:flex;"><span><span
style="color:#719e07">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>运行 Provider 和 Consumer ,可以看到请求正常返回了</p>
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">}</span>
+</span></span></code></pre></div><ol start="12">
+<li>运行 Provider 和 Consumer ,可以看到请求正常返回了</li>
+</ol>
<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-java" data-lang="java"><span
style="display:flex;"><span><span
style="color:#719e07">&gt;</span> onNext\
</span></span><span style="display:flex;"><span><span
style="color:#719e07">&gt;</span> receive name<span
style="color:#719e07">:</span>tony\
</span></span><span style="display:flex;"><span><span
style="color:#719e07">&gt;</span> onNext\
</span></span><span style="display:flex;"><span><span
style="color:#719e07">&gt;</span> receive name<span
style="color:#719e07">:</span>nick\
</span></span><span style="display:flex;"><span><span
style="color:#719e07">&gt;</span> onCompleted
-</span></span></code></pre></div></li>
-</ol>
-<h3 id="其他序列化方式">其他序列化方式</h3>
+</span></span></code></pre></div><h3
id="其他序列化方式">其他序列化方式</h3>
<p>省略上文中的 1-3 步,指定 Provider 和 Consumer 使用的协议即可完成协议升级。</p>
<blockquote>
<p>本文的示例可以在 <a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple">triple-samples</a>
找到</p>
@@ -704,16 +698,20 @@
</span></span></code></pre></div><h3 id="仅使用-dubbo-协议">仅使用
dubbo 协议</h3>
<p>为保证兼容性,我们先将部分 provider 升级到 <code>dubbo3</code> 版本并使用
<code>dubbo</code> 协议。</p>
<p>使用 <code>dubbo</code> 协议启动一个 <a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationDubboProvider.java"><code>Provider</code></a>
和 <a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationDubboConsumer.java"><code>Consumer</code></
[...]
-<p>输出如下:
-<img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-dubbo-dubbo-result.png"
alt="result"></p>
+<div class="alert alert-info" role="alert">
+<h4 class="alert-heading">输出结果</h4>
+<img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-dubbo-dubbo-result.png"
alt="result">
+</div>
<h3 id="仅使用-triple-协议">仅使用 triple 协议</h3>
<p>当所有的 consumer 都升级至支持 <code>Triple</code> 协议的版本后,provider 可切换至仅使用
<code>Triple</code> 协议启动</p>
<p>结构如图所示:
<img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/migrate-only-tri-strust.png"
alt="strust"></p>
<p><a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriProvider.java">Provider</a>
和 <a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriConsumer.java">Consumer</a>
完成调用。</p>
-<p>输出如下:</p>
-<p><img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-tri-tri-result.png"
alt="result"></p>
+<div class="alert alert-info" role="alert">
+<h4 class="alert-heading">输出结果</h4>
+<img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-tri-tri-result.png"
alt="result">
+</div>
<h3 id="同时使用-dubbo-和-triple-协议">同时使用 dubbo 和 triple 协议</h3>
<p>对于线上服务的升级,不可能一蹴而就同时完成 provider 和 consumer 升级, 需要按步操作,</p>
<p><strong>第一步:保证业务稳定。</strong></p>
@@ -724,8 +722,10 @@
<p>按照推荐升级步骤,provider 已经支持了 tri 协议,所以 dubbo3 的 consumer 可以直接使用 tri 协议</p>
</blockquote>
<p>使用 <code>dubbo</code> 协议和 <code>triple</code> 协议启动<a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothProvider.java"><code>Provider</code></a>和<a
href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothConsumer.java"><code>
[...]
-<p>输出如下:</p>
-<p><img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-both-dubbo-tri-result.png"
alt="result"></p></description></item><item><title>Overview: Streaming
通信</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/streaming/</guid><description>
+<div class="alert alert-info" role="alert">
+<h4 class="alert-heading">输出结果</h4>
+<img
src="https://cn.dubbo.apache.org/imgs/v3/migration/tri/dubbo3-tri-migration-both-dubbo-tri-result.png"
alt="result">
+</div></description></item><item><title>Overview: Streaming
通信</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/streaming/</guid><description>
<h2 id="流实现原理">流实现原理</h2>
<p><code>Triple</code>协议的流模式</p>
<ul>
diff --git
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/index.html
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/index.html
index b8029ede3e..bd8ff3f42c 100644
---
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/index.html
+++
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=canonical
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta
charset=utf-8><meta name=viewp [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=canonical
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta
charset=utf-8><meta name=viewp [...]
<script>var
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function
gtag(){dataLayer.push(arguments)}gtag("js",new
Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link
rel=preload
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
as=style><link
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js
integrity="sha256-9/a [...]
<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta
name=theme-color content="#326ce5"><link rel=stylesheet
href=/css/feature-states.css><meta name=description content="Dubbo2 协议迁移"><meta
property="og:description" content="Dubbo2 协议迁移"><meta name=twitter:description
content="Dubbo2 协议迁移"><meta property="og:url"
content="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration/"><meta
property="og:title" content="Dubb [...]
<link href=/css/community.css rel=stylesheet><link href=/css/contactus.css
rel=stylesheet><link href=/css/language.css rel=stylesheet><script
src=/js/script.js></script></head><body class="td-page
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="
[...]
@@ -687,12 +687,11 @@
</span></span><span style=display:flex><span> <span
style=color:#719e07>return</span> <span
style=color:#2aa198>"hello,"</span> <span style=color:#719e07>+</span>
request<span style=color:#719e07>;</span>
</span></span><span style=display:flex><span> <span
style=color:#719e07>}</span>
</span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><h3 id=仅使用-dubbo-协议>仅使用 dubbo
协议</h3><p>为保证兼容性,我们先将部分 provider 升级到 <code>dubbo3</code> 版本并使用
<code>dubbo</code> 协议。</p><p>使用 <code>dubbo</code> 协议启动一个 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationDubboProvider.java><code>Provider</code></a>
和 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-sample
[...]
-<img src=/imgs/v3/migration/tri/dubbo3-tri-migration-dubbo-dubbo-result.png
alt=result></p><h3 id=仅使用-triple-协议>仅使用 triple 协议</h3><p>当所有的 consumer 都升级至支持
<code>Triple</code> 协议的版本后,provider 可切换至仅使用 <code>Triple</code>
协议启动</p><p>结构如图所示:
+</span></span></code></pre></div><h3 id=仅使用-dubbo-协议>仅使用 dubbo
协议</h3><p>为保证兼容性,我们先将部分 provider 升级到 <code>dubbo3</code> 版本并使用
<code>dubbo</code> 协议。</p><p>使用 <code>dubbo</code> 协议启动一个 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationDubboProvider.java><code>Provider</code></a>
和 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-sample
[...]
<img src=/imgs/v3/migration/tri/migrate-only-tri-strust.png
alt=strust></p><p><a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriProvider.java>Provider</a>
-和 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriConsumer.java>Consumer</a>
完成调用。</p><p>输出如下:</p><p><img
src=/imgs/v3/migration/tri/dubbo3-tri-migration-tri-tri-result.png
alt=result></p><h3 id=同时使用-dubbo-和-triple-协议>同时使用 dubbo 和 triple
协议</h3><p>对于线上服务的升级,不可能一蹴而就同时完成 provider 和 consumer 升级,
需要按步操作,</p><p><strong>第一步:保证业务稳定。</strong></p><p><strong>第二步:provider 提供双协议的
[...]
-<img src=/imgs/v3/migration/tri/migrate-dubbo-tri-strust.png
alt=strust></p><blockquote><p>按照推荐升级步骤,provider 已经支持了 tri 协议,所以 dubbo3 的
consumer 可以直接使用 tri 协议</p></blockquote><p>使用 <code>dubbo</code> 协议和
<code>triple</code> 协议启动<a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothProvider.java><code>Provider</code></a>和<a
href=https://github.com/apache/dubbo-samples/tree/ma [...]
-<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
+和 <a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationTriConsumer.java>Consumer</a>
完成调用。</p><div class="alert alert-info" role=alert><h4
class=alert-heading>输出结果</h4><img
src=/imgs/v3/migration/tri/dubbo3-tri-migration-tri-tri-result.png
alt=result></div><h3 id=同时使用-dubbo-和-triple-协议>同时使用 dubbo 和 triple
协议</h3><p>对于线上服务的升级,不可能一蹴而就同时完成 provider 和 consumer 升级, 需要按步操作,</p><p>< [...]
+<img src=/imgs/v3/migration/tri/migrate-dubbo-tri-strust.png
alt=strust></p><blockquote><p>按照推荐升级步骤,provider 已经支持了 tri 协议,所以 dubbo3 的
consumer 可以直接使用 tri 协议</p></blockquote><p>使用 <code>dubbo</code> 协议和
<code>triple</code> 协议启动<a
href=https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/migration/ApiMigrationBothProvider.java><code>Provider</code></a>和<a
href=https://github.com/apache/dubbo-samples/tree/ma [...]
+<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
<a
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/triple/migration.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.
[...]
<a
href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo2%20%e5%8d%8f%e8%ae%ae%e8%bf%81%e7%a7%bb"
target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a
href=#迁移流程说明>迁移流程说明</a><ul><li><a href=#定义服务>定义服务</a></li><li><a
href=#仅使用-dubbo-协议>仅使用 dubbo 协议</a></li><li><a href=#仅使用-triple-协议>仅使用 triple
协议</a></li><li><a href=#同时使用-dubbo-和-triple-协议>同时使用 dubbo 和 triple
协议</a></li></ul></li></ul></nav></div></div></div></div><footer [...]
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index a347de8d36..011a7e77df 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu
[...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu
[...]
\ No newline at end of file