"use strict";(self.webpackChunkrocketmq_docs=self.webpackChunkrocketmq_docs||[]).push([[8792],{15680:(e,t,r)=>{r.d(t,{xA:()=>s,yg:()=>f});var n=r(96540);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?c(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},c=Object.keys(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++)r=c[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,c=e.originalType,l=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=p(r),g=a,f=m["".concat(l,".").concat(g)]||m[g]||u[g]||c;return r?n.createElement(f,o(o({ref:t},s),{},{components:r})):n.createElement(f,o({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var c=r.length,o=new Array(c);o[0]=g;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[m]="string"==typeof e?e:a,o[1]=i;for(var p=2;p<c;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}g.displayName="MDXCreateElement"},64078:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>p});var n=r(58168),a=(r(96540),r(15680));const c={title:"Release Notes - Apache RocketMQ Client CPP- Version 2.2.0",categories:["Release_Notes"],tags:["RocketMQ_Client_CPP"]},o=void 0,i={permalink:"/zh/release-notes/2020/04/02/release-notes-rocketmq-client-cpp-2.2.0",source:"@site/release-notes/2020-04-02-release-notes-rocketmq-client-cpp-2.2.0.md",title:"Release Notes - Apache RocketMQ Client CPP- Version 2.2.0",description:"* Source: rocketmq-client-cpp-2.2.0-source-release.tar.gz [PGP] [SHA512]",date:"2020-04-02T00:00:00.000Z",formattedDate:"2020\u5e744\u67082\u65e5",tags:[{label:"RocketMQ_Client_CPP",permalink:"/zh/release-notes/tags/rocket-mq-client-cpp"}],readingTime:.565,hasTruncateMarker:!0,authors:[],frontMatter:{title:"Release Notes - Apache RocketMQ Client CPP- Version 2.2.0",categories:["Release_Notes"],tags:["RocketMQ_Client_CPP"]},prevItem:{title:"Release Notes - Apache RocketMQ - Version 4.7.1",permalink:"/zh/release-notes/2020/06/29/4.7.1"},nextItem:{title:"Release Notes - Apache RocketMQ Client Go- Version 2.0.0",permalink:"/zh/release-notes/2020/03/31/release-notes-rocketmq-client-go-2.0.0"}},l={authorsImageUrls:[]},p=[],s={toc:p},m="wrapper";function u(e){let{components:t,...r}=e;return(0,a.yg)(m,(0,n.A)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("admonition",{title:"Download",type:"tip"},(0,a.yg)("ul",{parentName:"admonition"},(0,a.yg)("li",{parentName:"ul"},"Source: ",(0,a.yg)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi?path=rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-source-release.tar.gz"},"rocketmq-client-cpp-2.2.0-source-release.tar.gz")," [",(0,a.yg)("a",{parentName:"li",href:"https://archive.apache.org/dist/rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-source-release.tar.gz.asc"},"PGP"),"] [",(0,a.yg)("a",{parentName:"li",href:"https://archive.apache.org/dist/rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-source-release.tar.gz.sha512"},"SHA512"),"]"),(0,a.yg)("li",{parentName:"ul"},"Binary: ",(0,a.yg)("a",{parentName:"li",href:"https://www.apache.org/dyn/closer.cgi?path=rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-bin-release.tar.gz"},"rocketmq-client-cpp-2.2.0-bin-release.tar.gz")," [",(0,a.yg)("a",{parentName:"li",href:"https://archive.apache.org/dist/rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-bin-release.tar.gz.asc"},"PGP"),"] [",(0,a.yg)("a",{parentName:"li",href:"https://archive.apache.org/dist/rocketmq/rocketmq-client-cpp/2.2.0/rocketmq-client-cpp-2.2.0-bin-release.tar.gz.sha512"},"SHA512"),"]"))))}u.isMDXComponent=!0}}]);