| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – Dubbo 入门</title><link>https://dubbo.apache.org/zh-cn/overview/quickstart/</link><description>Recent content in Dubbo 入门 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/quickstart/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: Java 微服务开发入门</title><link>https://dubbo.apache.org/zh-cn/overview/quickstart/java/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/quickstart/java/</guid><description> |
| <section id="section-0" style=""> |
| <div class="td-content list-page"> |
| <div class="lead"></div><header class="article-meta"> |
| </header><div class="row"> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/quickstart/java/brief/'>快速部署</a> |
| </h4> |
| <p>零基础快速部署一个微服务应用</p> |
| </div> |
| </div> |
| </div> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/quickstart/java/spring-boot/'>Dubbo x Spring Boot 开发</a> |
| </h4> |
| <p>使用 dubbo-spring-boot-starter 开发微服务应用</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <hr> |
| </div> |
| </section></description></item><item><title>Overview: Go 微服务开发入门</title><link>https://dubbo.apache.org/zh-cn/overview/quickstart/go/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/quickstart/go/</guid><description> |
| <section id="section-0" style=""> |
| <div class="td-content list-page"> |
| <div class="lead"></div><header class="article-meta"> |
| </header><div class="row"> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/quickstart/go/install/'>安装 Dubbo-go 开发环境</a> |
| </h4> |
| <p>了解和安装 dubbogo-cli 工具</p> |
| </div> |
| </div> |
| </div> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/quickstart/go/quickstart_triple/'>完成一次 RPC 调用</a> |
| </h4> |
| <p>快速上手启动一个基于 Dubbo-go 的微服务应用</p> |
| </div> |
| </div> |
| </div> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/quickstart/go/quickstart_triple_with_customize/'>完成一次自己定义接口的 RPC 调用</a> |
| </h4> |
| <p>从零上手开发一个基于 Dubbo-go 的微服务应用</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <hr> |
| </div> |
| </section></description></item><item><title>Overview: Rust 微服务开发入门</title><link>https://dubbo.apache.org/zh-cn/overview/quickstart/rust/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/quickstart/rust/</guid><description> |
| <p>请在此查看完整 <a href="https://github.com/apache/dubbo-rust/tree/main/examples/greeter">示例</a>。</p> |
| <h2 id="1-前置条件">1 前置条件</h2> |
| <ul> |
| <li>安装 <a href="https://rustup.rs/">Rust</a> 开发环境</li> |
| <li>安装 <a href="https://grpc.io/docs/protoc-installation/">protoc</a> 工具</li> |
| </ul> |
| <h2 id="2-使用-idl-定义-dubbo-服务">2 使用 IDL 定义 Dubbo 服务</h2> |
| <p>Greeter 服务定义如下,包含一个 Unary(request-response) 模型的 Dubbo 服务。</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><span style="color:#586e75">// ./proto/greeter.proto |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></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></span><span style="display:flex;"><span><span style="color:#719e07">package</span> org<span style="color:#719e07">.</span>apache.dubbo.sample.tri; |
| </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 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">GreeterRequest</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">GreeterReply</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><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">service</span> Greeter{ |
| </span></span><span style="display:flex;"><span> <span style="color:#586e75">// unary |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> <span style="color:#719e07">rpc</span> greet(GreeterRequest) <span style="color:#719e07">returns</span> (GreeterReply); |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h2 id="3-添加-dubbo-rust-及相关依赖到项目">3 添加 Dubbo-rust 及相关依赖到项目</h2> |
| <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-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#586e75"># ./Cargo.toml</span> |
| </span></span><span style="display:flex;"><span>[package] |
| </span></span><span style="display:flex;"><span>name = <span style="color:#2aa198">&#34;example-greeter&#34;</span> |
| </span></span><span style="display:flex;"><span>version = <span style="color:#2aa198">&#34;0.1.0&#34;</span> |
| </span></span><span style="display:flex;"><span>edition = <span style="color:#2aa198">&#34;2021&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>[[bin]] |
| </span></span><span style="display:flex;"><span>name = <span style="color:#2aa198">&#34;greeter-server&#34;</span> |
| </span></span><span style="display:flex;"><span>path = <span style="color:#2aa198">&#34;src/greeter/server.rs&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>[[bin]] |
| </span></span><span style="display:flex;"><span>name = <span style="color:#2aa198">&#34;greeter-client&#34;</span> |
| </span></span><span style="display:flex;"><span>path = <span style="color:#2aa198">&#34;src/greeter/client.rs&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>[dependencies] |
| </span></span><span style="display:flex;"><span>http = <span style="color:#2aa198">&#34;0.2&#34;</span> |
| </span></span><span style="display:flex;"><span>http-body = <span style="color:#2aa198">&#34;0.4.4&#34;</span> |
| </span></span><span style="display:flex;"><span>futures-util = {version = <span style="color:#2aa198">&#34;0.3&#34;</span>, default-features = <span style="color:#cb4b16">false</span>} |
| </span></span><span style="display:flex;"><span>tokio = { version = <span style="color:#2aa198">&#34;1.0&#34;</span>, features = [ <span style="color:#2aa198">&#34;rt-multi-thread&#34;</span>, <span style="color:#2aa198">&#34;time&#34;</span>, <span style="color:#2aa198">&#34;fs&#34;</span>, <span style="color:#2aa198">&#34;macros&#34;</span>, <span style="color:#2aa198">&#34;net&#34;</span>, <span style="color:#2aa198">&#34;signal&#34;</span>] } |
| </span></span><span style="display:flex;"><span>prost-derive = {version = <span style="color:#2aa198">&#34;0.10&#34;</span>, optional = <span style="color:#cb4b16">true</span>} |
| </span></span><span style="display:flex;"><span>prost = <span style="color:#2aa198">&#34;0.10.4&#34;</span> |
| </span></span><span style="display:flex;"><span>async-trait = <span style="color:#2aa198">&#34;0.1.56&#34;</span> |
| </span></span><span style="display:flex;"><span>tokio-stream = <span style="color:#2aa198">&#34;0.1&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>dubbo = <span style="color:#2aa198">&#34;0.1.0&#34;</span> |
| </span></span><span style="display:flex;"><span>dubbo-config = <span style="color:#2aa198">&#34;0.1.0&#34;</span> |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span>[build-dependencies] |
| </span></span><span style="display:flex;"><span>dubbo-build = <span style="color:#2aa198">&#34;0.1.0&#34;</span> |
| </span></span></code></pre></div><h2 id="4-配置-dubbo-build-编译-idl">4 配置 dubbo-build 编译 IDL</h2> |
| <p>在项目根目录创建 (not /src),创建 <code>build.rs</code> 文件并添加以下内容:</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-rust" data-lang="rust"><span style="display:flex;"><span><span style="color:#586e75">// ./build.rs |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span><span style="color:#719e07">fn</span> <span style="color:#268bd2">main</span>() { |
| </span></span><span style="display:flex;"><span> dubbo_build::prost::configure() |
| </span></span><span style="display:flex;"><span> .compile(<span style="color:#719e07">&amp;</span>[<span style="color:#2aa198">&#34;proto/greeter.proto&#34;</span>], <span style="color:#719e07">&amp;</span>[<span style="color:#2aa198">&#34;proto/&#34;</span>]) |
| </span></span><span style="display:flex;"><span> .unwrap(); |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><p>这样配置之后,编译项目就可以生成 Dubbo Stub 相关代码,路径一般在<code>./target/debug/build/example-greeter-&lt;id&gt;/out/org.apache.dubbo.sample.tri.rs</code>。</p> |
| <h2 id="5-编写-dubbo-业务代码">5 编写 Dubbo 业务代码</h2> |
| <h3 id="51-编写-dubbo-server">5.1 编写 Dubbo Server</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-rust" data-lang="rust"><span style="display:flex;"><span><span style="color:#586e75">// ./src/greeter/server.rs |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span><span style="color:#719e07">use</span> <span style="color:#719e07">..</span>. |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">#[tokio::main]</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">async</span> <span style="color:#719e07">fn</span> <span style="color:#268bd2">main</span>() { |
| </span></span><span style="display:flex;"><span> register_server(GreeterServerImpl { |
| </span></span><span style="display:flex;"><span> name: <span style="color:#2aa198">&#34;greeter&#34;</span>.to_string(), |
| </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">// Dubbo::new().start().await; |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> Dubbo::new() |
| </span></span><span style="display:flex;"><span> .with_config({ |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">let</span> r <span style="color:#719e07">=</span> RootConfig::new(); |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">match</span> r.load() { |
| </span></span><span style="display:flex;"><span> <span style="color:#b58900">Ok</span>(config) <span style="color:#719e07">=&gt;</span> config, |
| </span></span><span style="display:flex;"><span> <span style="color:#b58900">Err</span>(_err) <span style="color:#719e07">=&gt;</span> panic!(<span style="color:#2aa198">&#34;err: </span><span style="color:#2aa198">{:?}</span><span style="color:#2aa198">&#34;</span>, _err), <span style="color:#586e75">// response was droped |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span> } |
| </span></span><span style="display:flex;"><span> }) |
| </span></span><span style="display:flex;"><span> .start() |
| </span></span><span style="display:flex;"><span> .<span style="color:#719e07">await</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:#719e07">#[allow(dead_code)]</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">#[derive(Default, Clone)]</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">struct</span> <span style="color:#268bd2">GreeterServerImpl</span> { |
| </span></span><span style="display:flex;"><span> name: <span style="color:#b58900">String</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">// #[async_trait] |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span><span style="color:#719e07">#[async_trait]</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">impl</span> Greeter <span style="color:#719e07">for</span> GreeterServerImpl { |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">async</span> <span style="color:#719e07">fn</span> <span style="color:#268bd2">greet</span>( |
| </span></span><span style="display:flex;"><span> <span style="color:#719e07">&amp;</span><span style="color:#268bd2">self</span>, |
| </span></span><span style="display:flex;"><span> request: <span style="color:#268bd2">Request</span><span style="color:#719e07">&lt;</span>GreeterRequest<span style="color:#719e07">&gt;</span>, |
| </span></span><span style="display:flex;"><span> ) -&gt; <span style="color:#b58900">Result</span><span style="color:#719e07">&lt;</span>Response<span style="color:#719e07">&lt;</span>GreeterReply<span style="color:#719e07">&gt;</span>, dubbo::status::Status<span style="color:#719e07">&gt;</span> { |
| </span></span><span style="display:flex;"><span> println!(<span style="color:#2aa198">&#34;GreeterServer::greet </span><span style="color:#2aa198">{:?}</span><span style="color:#2aa198">&#34;</span>, request.metadata); |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> <span style="color:#b58900">Ok</span>(Response::new(GreeterReply { |
| </span></span><span style="display:flex;"><span> message: <span style="color:#2aa198">&#34;hello, dubbo-rust&#34;</span>.to_string(), |
| </span></span><span style="display:flex;"><span> })) |
| </span></span><span style="display:flex;"><span> } |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h3 id="52-配置dubboyaml">5.2 配置dubbo.yaml</h3> |
| <p>dubbo.yaml指示server端的配置,包括暴露的服务列表、协议配置、监听配置等。</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-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#586e75"># ./dubbo.yaml</span> |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">name</span>: dubbo |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">service</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">org.apache.dubbo.sample.tri.Greeter</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">version</span>: <span style="color:#2aa198">1.0.0</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">group</span>: test |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>: triple |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry</span>: <span style="color:#2aa198">&#39;&#39;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">serializer</span>: json |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol_configs</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">ip</span>: <span style="color:#2aa198">0.0.0.0</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">&#39;8888&#39;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: triple |
| </span></span><span style="display:flex;"><span><span style="color:#268bd2">protocols</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">triple</span>: |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">ip</span>: <span style="color:#2aa198">0.0.0.0</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">&#39;8888&#39;</span> |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: triple |
| </span></span></code></pre></div><h3 id="53-编写-dubbo-client">5.3 编写 Dubbo Client</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-rust" data-lang="rust"><span style="display:flex;"><span><span style="color:#586e75">// ./src/greeter/client.rs |
| </span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span><span style="color:#719e07">use</span> <span style="color:#719e07">..</span>. |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">#[tokio::main]</span> |
| </span></span><span style="display:flex;"><span><span style="color:#719e07">async</span> <span style="color:#719e07">fn</span> <span style="color:#268bd2">main</span>() { |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">let</span> <span style="color:#719e07">mut</span> cli <span style="color:#719e07">=</span> GreeterClient::new().with_uri(<span style="color:#2aa198">&#34;http://127.0.0.1:8888&#34;</span>.to_string()); |
| </span></span><span style="display:flex;"><span> |
| </span></span><span style="display:flex;"><span> println!(<span style="color:#2aa198">&#34;# unary call&#34;</span>); |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">let</span> resp <span style="color:#719e07">=</span> cli |
| </span></span><span style="display:flex;"><span> .greet(Request::new(GreeterRequest { |
| </span></span><span style="display:flex;"><span> name: <span style="color:#2aa198">&#34;message from client&#34;</span>.to_string(), |
| </span></span><span style="display:flex;"><span> })) |
| </span></span><span style="display:flex;"><span> .<span style="color:#719e07">await</span>; |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">let</span> resp <span style="color:#719e07">=</span> <span style="color:#719e07">match</span> resp { |
| </span></span><span style="display:flex;"><span> <span style="color:#b58900">Ok</span>(resp) <span style="color:#719e07">=&gt;</span> resp, |
| </span></span><span style="display:flex;"><span> <span style="color:#b58900">Err</span>(err) <span style="color:#719e07">=&gt;</span> <span style="color:#719e07">return</span> println!(<span style="color:#2aa198">&#34;</span><span style="color:#2aa198">{:?}</span><span style="color:#2aa198">&#34;</span>, err), |
| </span></span><span style="display:flex;"><span> }; |
| </span></span><span style="display:flex;"><span> <span style="color:#268bd2">let</span> (_parts, body) <span style="color:#719e07">=</span> resp.into_parts(); |
| </span></span><span style="display:flex;"><span> println!(<span style="color:#2aa198">&#34;Response: </span><span style="color:#2aa198">{:?}</span><span style="color:#2aa198">&#34;</span>, body); |
| </span></span><span style="display:flex;"><span>} |
| </span></span></code></pre></div><h2 id="6-运行并总结">6 运行并总结</h2> |
| <ol> |
| <li>编译</li> |
| </ol> |
| <p>执行<code>cargo build</code>来编译server和client。</p> |
| <ol start="2"> |
| <li>运行server</li> |
| </ol> |
| <p>执行<code>./target/debug/greeter-server</code>来运行server,如上文dubbo.yaml所配置,server会监听8888端口,并以triple协议提供RPC服务:</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-sh" data-lang="sh"><span style="display:flex;"><span>$ ./target/debug/greeter-server |
| </span></span><span style="display:flex;"><span>2022-09-28T23:33:28.104577Z INFO dubbo::framework: url: Some<span style="color:#719e07">(</span>Url <span style="color:#719e07">{</span> uri: <span style="color:#2aa198">&#34;triple://0.0.0.0:8888/org.apache.dubbo.sample.tri.Greeter&#34;</span>, protocol: <span style="color:#2aa198">&#34;triple&#34;</span>, location: <span style="color:#2aa198">&#34;0.0.0.0:8888&#34;</span>, ip: <span style="color:#2aa198">&#34;0.0.0.0&#34;</span>, port: <span style="color:#2aa198">&#34;8888&#34;</span>, service_key: <span style="color:#719e07">[</span><span style="color:#2aa198">&#34;org.apache.dubbo.sample.tri.Greeter&#34;</span><span style="color:#719e07">]</span>, params: <span style="color:#719e07">{}</span> <span style="color:#719e07">})</span> |
| </span></span></code></pre></div><ol start="3"> |
| <li>运行client,验证调用是否成功</li> |
| </ol> |
| <p>执行<code>./target/debug/greeter-client</code>来运行client,调用<code>triple://127.0.0.1:8888/org.apache.dubbo.sample.tri.Greeter</code>下的各种方法:</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-sh" data-lang="sh"><span style="display:flex;"><span>$ ./target/debug/greeter-client |
| </span></span><span style="display:flex;"><span>Response: GreeterReply <span style="color:#719e07">{</span> message: <span style="color:#2aa198">&#34;hello, dubbo-rust&#34;</span> <span style="color:#719e07">}</span> |
| </span></span></code></pre></div><h2 id="7-更多示例">7 更多示例</h2> |
| <section id="section-0" style=""> |
| <div class="td-content list-page"> |
| <div class="lead"></div><header class="article-meta"> |
| </header><div class="row"> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/mannual/rust-sdk/streaming/'>Streaming 通信模式</a> |
| </h4> |
| <p>使用 Dubbo Rust 实现 Streaming 通信模型。</p> |
| </div> |
| </div> |
| </div> |
| <div class="col-sm col-md-6 mb-4"> |
| <div class="h-100 card shadow" href="#"> |
| <div class="card-body"> |
| <h4 class="card-title"> |
| <a href='https://dubbo.apache.org/zh-cn/overview/mannual/rust-sdk/java-interoperability/'>与 Dubbo Java 互通</a> |
| </h4> |
| <p>实现与其他 Dubbo 多语言服务的互通</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <hr> |
| </div> |
| </section></description></item><item><title>Overview: Node.js 微服务开发入门</title><link>https://dubbo.apache.org/zh-cn/overview/quickstart/nodejs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/quickstart/nodejs/</guid><description/></item></channel></rss> |