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