blob: 0cf6ab781e00d2809ecffa706ee5b365f229d630 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.4">
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache ShenYu Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache ShenYu Blog Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache ShenYu" href="/opensearch.xml">
<link rel="alternate" type="application/rss+xml" href="/news/rss.xml" title="Apache ShenYu Blog RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/news/atom.xml" title="Apache ShenYu Blog Atom Feed"><title data-react-helmet="true">Quick start with gRPC | Apache ShenYu</title><meta data-react-helmet="true" property="og:url" content="https://shenyu.apache.org//docs/2.5.0/quick-start/quick-start-grpc"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="2.5.0"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-2.5.0"><meta data-react-helmet="true" property="og:title" content="Quick start with gRPC | Apache ShenYu"><meta data-react-helmet="true" name="description" content="Quick start with gRPC"><meta data-react-helmet="true" property="og:description" content="Quick start with gRPC"><link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.svg"><link data-react-helmet="true" rel="canonical" href="https://shenyu.apache.org//docs/2.5.0/quick-start/quick-start-grpc"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//docs/2.5.0/quick-start/quick-start-grpc" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//zh/docs/2.5.0/quick-start/quick-start-grpc" hreflang="zh"><link data-react-helmet="true" rel="alternate" href="https://shenyu.apache.org//docs/2.5.0/quick-start/quick-start-grpc" hreflang="x-default"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.cc2d0c98.css">
<link rel="preload" href="/assets/js/runtime~main.19526316.js" as="script">
<link rel="preload" href="/assets/js/main.0feaae07.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div><a href="#" class="skipToContent_OuoZ">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><img src="/img/logo.svg" alt="Apache ShenYu Logo" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/logo-light.svg" alt="Apache ShenYu Logo" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/download">Download</a><a class="navbar__item navbar__link" href="/document">Docs</a><a class="navbar__item navbar__link" href="/community/contributor-guide">Community</a><a class="navbar__item navbar__link" href="/team">Team</a><a class="navbar__item navbar__link" href="/event">Event</a><a class="navbar__item navbar__link" href="/news">News</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/users">Users</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__item navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><a href="https://github.com/apache/shenyu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link"><span>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" class="navbar__item navbar__link"><span><svg t="1631348384596" class="icon" viewBox="0 0 1024 1024" version="1.1" style="vertical-align:text-bottom;margin-right:5px" p-id="557" width="20" height="20"><path d="M547.797333 638.208l-104.405333-103.168 1.237333-1.28a720.170667 720.170667 0 0 0 152.490667-268.373333h120.448V183.082667h-287.744V100.906667H347.605333v82.218666H59.818667V265.386667h459.178666a648.234667 648.234667 0 0 1-130.304 219.946666 643.242667 643.242667 0 0 1-94.976-137.728H211.541333a722.048 722.048 0 0 0 122.453334 187.434667l-209.194667 206.378667 58.368 58.368 205.525333-205.525334 127.872 127.829334 31.232-83.84m231.424-208.426667h-82.218666l-184.96 493.312h82.218666l46.037334-123.306667h195.242666l46.464 123.306667h82.218667l-185.002667-493.312m-107.690666 287.744l66.56-178.005333 66.602666 178.005333z" fill="currentColor" p-id="558"></path></svg><span>English</span></span></a><ul class="dropdown__menu"><li><a href="/docs/2.5.0/quick-start/quick-start-grpc" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" style="text-transform:capitalize">English</a></li><li><a href="/zh/docs/2.5.0/quick-start/quick-start-grpc" target="_self" rel="noopener noreferrer" class="dropdown__link" style="text-transform:capitalize">简体中文</a></li></ul></div><div class="react-toggle toggle_2i4l react-toggle--disabled"><div class="react-toggle-track" role="button" tabindex="-1"><div class="react-toggle-track-check"><span class="toggle_iYfV">🌜</span></div><div class="react-toggle-track-x"><span class="toggle_iYfV">🌞</span></div><div class="react-toggle-thumb"></div></div><input type="checkbox" class="react-toggle-screenreader-only" aria-label="Switch between dark and light mode"></div><div class="searchBox_Bc3W"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper docs-wrapper doc-page"><div class="docPage_lDyR"><button class="clean-btn backToTopButton_i9tI" type="button" title="Scroll to top"><svg viewBox="0 0 24 24" width="28"><path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" fill="currentColor"></path></svg></button><aside class="docSidebarContainer_0YBq"><div class="sidebar_a3j0"><nav class="menu thin-scrollbar menu_cyFh menuWithAnnouncementBar_+O1J"><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" href="/docs/2.5.0/index">Overview</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Design</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Deployment</a></li><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#">Quick Start</a><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-dubbo">Quick start with Dubbo</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-grpc">Quick start with gRPC</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-http">Quick start with Http</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-motan">Quick start with Motan</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-sofa">Quick start with Sofa</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-springcloud">Quick start with Spring Cloud</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-tars">Quick start with Tars</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/2.5.0/quick-start/quick-start-websocket">Quick start with Websocket</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">User Guide</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Plugin Center</a></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#">Developer</a></li></ul></nav></div></aside><main class="docMainContainer_r8cw"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_zHA2"><div class="alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for Apache ShenYu <b>2.5.0</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/quick-start/quick-start-grpc">latest version</a></b> (2.7.0).</div></div><div class="docItemContainer_oiyr"><article><span class="badge badge--secondary">Version: 2.5.0</span><div class="tocCollapsible_aw-L tocMobile_Tx6Y"><button type="button" class="clean-btn tocCollapsibleButton_zr6a">On this page</button></div><div class="markdown"><header><h1 class="h1Heading_dC7a">Quick start with gRPC</h1></header><p>This document introduces how to quickly access the Apache ShenYu gateway using gRPC. You can get the code example of this document by clicking <a href="https://github.com/apache/shenyu/tree/v2.5.0/shenyu-examples/shenyu-examples-grpc" target="_blank" rel="noopener noreferrer">here</a> .</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="prepare-for-environment"></a>Prepare For Environment<a class="hash-link" href="#prepare-for-environment" title="Direct link to heading">#</a></h2><p>Please refer to the deployment to select a way to start shenyu-admin. For example, start the Apache ShenYu gateway management system through <a href="/docs/2.5.0/deployment/deployment-local">local deployment</a> .</p><p>After successful startup, you need to open the gRPC plugin on in the BasicConfig <code>-&gt;</code> Plugin.</p><img src="/img/shenyu/quick-start/grpc/grpc-en-1.png" width="60%" height="50%"><p>If you are a startup gateway by means of source, can be directly run the ShenyuBootstrapApplication of shenyu-bootstrap module.</p><blockquote><p>Note: Before starting, make sure the gateway has added dependencies.</p></blockquote><p>Add the following dependencies to the gateway&#x27;s <code>pom.xml</code> file:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI xml"><pre tabindex="0" class="prism-code language-xml codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- apache shenyu grpc plugin start--&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">org.apache.shenyu</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">groupId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">shenyu-spring-boot-starter-plugin-grpc</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">artifactId</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">${project.version}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">version</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">dependency</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- apache shenyu grpc plugin end--&gt;</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="run-the-shenyu-examples-grpc-project"></a>Run the shenyu-examples-grpc project<a class="hash-link" href="#run-the-shenyu-examples-grpc-project" title="Direct link to heading">#</a></h2><p>Download <a href="https://github.com/apache/shenyu/tree/v2.5.0/shenyu-examples/shenyu-examples-grpc" target="_blank" rel="noopener noreferrer">shenyu-examples-grpc</a></p><p>Run the following command under <code>shenyu-examples-grpc</code> to generate Java code:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI shell"><pre tabindex="0" class="prism-code language-shell codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token plain">mvn protobuf:compile </span></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn protobuf:compile-custom </span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Execute the <code>org.apache.shenyu.examples.grpc.ShenyuTestGrpcApplication</code> main method to start project.</p><p>The following log appears when the startup is successful:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI shell"><pre tabindex="0" class="prism-code language-shell codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token number" style="color:#36acaa">2021</span><span class="token plain">-06-18 </span><span class="token number" style="color:#36acaa">19</span><span class="token plain">:33:32.866 INFO </span><span class="token number" style="color:#36acaa">11004</span><span class="token plain"> --- </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">or_consumer_-19</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> o.a.s.r.client.http.utils.RegisterUtils </span><span class="token builtin class-name">:</span><span class="token plain"> grpc client register success: </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;appName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;127.0.0.1:8080&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;contextPath&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;path&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/clientStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;pathDesc&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;clientStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcType&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;serviceName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.StreamService&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;methodName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;clientStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;ruleName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/clientStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;parameterTypes&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;io.grpc.stub.StreamObserver&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcExt&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;{</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">timeout</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:5000,</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">methodType</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">CLIENT_STREAMING</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">}&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;enabled&quot;</span><span class="token plain">:true,</span><span class="token string" style="color:#e3116c">&quot;host&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;172.20.10.6&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;port&quot;</span><span class="token plain">:8080,</span><span class="token string" style="color:#e3116c">&quot;registerMetaData&quot;</span><span class="token plain">:false</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">2021</span><span class="token plain">-06-18 </span><span class="token number" style="color:#36acaa">19</span><span class="token plain">:33:32.866 INFO </span><span class="token number" style="color:#36acaa">11004</span><span class="token plain"> --- </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">or_consumer_-17</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> o.a.s.r.client.http.utils.RegisterUtils </span><span class="token builtin class-name">:</span><span class="token plain"> grpc client register success: </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;appName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;127.0.0.1:8080&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;contextPath&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;path&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/echo&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;pathDesc&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;echo&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcType&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;serviceName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;echo.EchoService&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;methodName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;echo&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;ruleName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/echo&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;parameterTypes&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;echo.EchoRequest,io.grpc.stub.StreamObserver&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcExt&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;{</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">timeout</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:5000,</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">methodType</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">UNARY</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">}&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;enabled&quot;</span><span class="token plain">:true,</span><span class="token string" style="color:#e3116c">&quot;host&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;172.20.10.6&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;port&quot;</span><span class="token plain">:8080,</span><span class="token string" style="color:#e3116c">&quot;registerMetaData&quot;</span><span class="token plain">:false</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">2021</span><span class="token plain">-06-18 </span><span class="token number" style="color:#36acaa">19</span><span class="token plain">:33:32.866 INFO </span><span class="token number" style="color:#36acaa">11004</span><span class="token plain"> --- </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">or_consumer_-20</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> o.a.s.r.client.http.utils.RegisterUtils </span><span class="token builtin class-name">:</span><span class="token plain"> grpc client register success: </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;appName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;127.0.0.1:8080&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;contextPath&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;path&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/bidiStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;pathDesc&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;bidiStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcType&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;serviceName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.StreamService&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;methodName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;bidiStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;ruleName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/bidiStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;parameterTypes&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;io.grpc.stub.StreamObserver&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcExt&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;{</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">timeout</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:5000,</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">methodType</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">BIDI_STREAMING</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">}&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;enabled&quot;</span><span class="token plain">:true,</span><span class="token string" style="color:#e3116c">&quot;host&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;172.20.10.6&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;port&quot;</span><span class="token plain">:8080,</span><span class="token string" style="color:#e3116c">&quot;registerMetaData&quot;</span><span class="token plain">:false</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">2021</span><span class="token plain">-06-18 </span><span class="token number" style="color:#36acaa">19</span><span class="token plain">:33:32.866 INFO </span><span class="token number" style="color:#36acaa">11004</span><span class="token plain"> --- </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">or_consumer_-21</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> o.a.s.r.client.http.utils.RegisterUtils </span><span class="token builtin class-name">:</span><span class="token plain"> grpc client register success: </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;appName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;127.0.0.1:8080&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;contextPath&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;path&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/unaryFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;pathDesc&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;unaryFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcType&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;serviceName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.StreamService&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;methodName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;unaryFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;ruleName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/unaryFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;parameterTypes&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.RequestData,io.grpc.stub.StreamObserver&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcExt&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;{</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">timeout</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:5000,</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">methodType</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">UNARY</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">}&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;enabled&quot;</span><span class="token plain">:true,</span><span class="token string" style="color:#e3116c">&quot;host&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;172.20.10.6&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;port&quot;</span><span class="token plain">:8080,</span><span class="token string" style="color:#e3116c">&quot;registerMetaData&quot;</span><span class="token plain">:false</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">2021</span><span class="token plain">-06-18 </span><span class="token number" style="color:#36acaa">19</span><span class="token plain">:33:32.866 INFO </span><span class="token number" style="color:#36acaa">11004</span><span class="token plain"> --- </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">or_consumer_-18</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> o.a.s.r.client.http.utils.RegisterUtils </span><span class="token builtin class-name">:</span><span class="token plain"> grpc client register success: </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">&quot;appName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;127.0.0.1:8080&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;contextPath&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;path&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/serverStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;pathDesc&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;serverStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcType&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;grpc&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;serviceName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.StreamService&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;methodName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;serverStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;ruleName&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;/grpc/serverStreamingFun&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;parameterTypes&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;stream.RequestData,io.grpc.stub.StreamObserver&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;rpcExt&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;{</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">timeout</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:5000,</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">methodType</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">:</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">SERVER_STREAMING</span><span class="token string entity" style="color:#36acaa">\&quot;</span><span class="token string" style="color:#e3116c">}&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;enabled&quot;</span><span class="token plain">:true,</span><span class="token string" style="color:#e3116c">&quot;host&quot;</span><span class="token builtin class-name">:</span><span class="token string" style="color:#e3116c">&quot;172.20.10.6&quot;</span><span class="token plain">,</span><span class="token string" style="color:#e3116c">&quot;port&quot;</span><span class="token plain">:8080,</span><span class="token string" style="color:#e3116c">&quot;registerMetaData&quot;</span><span class="token plain">:false</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="test"></a>Test<a class="hash-link" href="#test" title="Direct link to heading">#</a></h2><p>The <code>shenyu-examples-grpc</code> project will automatically register interface methods annotated with <code>@ShenyuGrpcClient</code> in the Apache ShenYu gateway after successful startup.</p><p>Open PluginList -&gt; rpc proxy -&gt; gRPC to see the list of plugin rule configurations:</p><p><img src="/assets/images/grpc-service-en-452d3e22231d1f157574d8100d0cf487.png"></p><p>Use <code>postman</code> to simulate <code>http</code> to request your gRPC service. The following is the request body.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI json"><pre tabindex="0" class="prism-code language-json codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;message&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p><img src="/assets/images/grpc-echo-622ab008544874bfe975c31ea8545f52.png"></p><p>The parameters are passed in json format. The name of the key is <code>data</code> by default, and you can reset it in <code>GrpcConstants.JSON_DESCRIPTOR_PROTO_FIELD_NAME</code>. The input of value is based on the proto file defined by you.</p><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="streaming"></a>Streaming<a class="hash-link" href="#streaming" title="Direct link to heading">#</a></h2><p>the Apache ShenYu can support streaming of gRPC. The following shows the calls of the four method types of gRPC. In streaming, you can pass multiple parameters in the form of an array.</p><ul><li><code>UNARY</code></li></ul><p>The request body like this.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI json"><pre tabindex="0" class="prism-code language-json codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Then, call gRPC service by <code>UNARY</code> method type.</p><p><img src="/assets/images/grpc-unary-db53f0d92c8528d0685a008264891bad.png"></p><ul><li><code>CLIENT_STREAMING</code></li></ul><p>The request body like this.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI json"><pre tabindex="0" class="prism-code language-json codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Then, call gRPC service by <code>CLIENT_STREAMING</code> method type.</p><p><img src="/assets/images/grpc-client-stream-a715f4134ee74eb658ba99c0f60c65b6.png"></p><ul><li><code>SERVER_STREAMING</code></li></ul><p>The request body like this.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI json"><pre tabindex="0" class="prism-code language-json codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Then, call gRPC service by <code>SERVER_STREAMING</code> method type.</p><p><img src="/assets/images/grpc-server-stream-515e14914bb628f6e1886f2c07e5a88f.png"></p><ul><li><code>BIDI_STREAMING</code></li></ul><p>The request body like this.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI json"><pre tabindex="0" class="prism-code language-json codeBlock_rtdJ thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;data&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">&quot;text&quot;</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;hello grpc&quot;</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Then, call gRPC service by <code>BIDI_STREAMING</code> method type.</p><p><img src="/assets/images/grpc-bidi-stream-56880817c53ae36e4408d957b0269cdc.png"></p></div><footer class="row docusaurus-mt-lg"><div class="col"><a href="https://github.com/apache/shenyu-website/edit/main/versioned_docs/version-2.5.0/quick-start/quick-start-grpc.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_mS5F" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_wj+Z"></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/2.5.0/quick-start/quick-start-dubbo"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« Quick start with Dubbo</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/2.5.0/quick-start/quick-start-http"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Quick start with Http »</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_vrFS thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prepare-for-environment" class="table-of-contents__link">Prepare For Environment</a></li><li><a href="#run-the-shenyu-examples-grpc-project" class="table-of-contents__link">Run the shenyu-examples-grpc project</a></li><li><a href="#test" class="table-of-contents__link">Test</a></li><li><a href="#streaming" class="table-of-contents__link">Streaming</a></li></ul></div></div></div></div></main></div></div></div>
<script src="/assets/js/runtime~main.19526316.js"></script>
<script src="/assets/js/main.0feaae07.js"></script>
</body>
</html>