PageSourceSearch

https://www.rabbitmq.com/assets/js/7f818192.0ea6b89e.js

js rabbitmq.com collected 2026-10-01 06:32:49 UTC 26,147 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkrabbitmq_website=self.webpackChunkrabbitmq_website||[]).push([["19922"],{81238(e,n,r){r.r(n),r.d(n,{metadata:()=>i,default:()=>u,frontMatter:()=>l,contentTitle:()=>o,toc:()=>c,assets:()=>d});var i=JSON.parse('{"id":"install-generic-unix","title":"Generic Binary Build","description":"\x3c!--","source":"@site/versioned_docs/version-3.13/install-generic-unix.md","sourceDirName":".","slug":"/install-generic-unix","permalink":"/docs/3.13/install-generic-unix","draft":false,"unlisted":false,"editUrl":"https://github.com/rabbitmq/rabbitmq-website/tree/main/versioned_docs/version-3.13/install-generic-unix.md","tags":[],"version":"3.13","frontMatter":{"title":"Generic Binary Build","displayed_sidebar":"docsSidebar"},"sidebar":"docsSidebar","previous":{"title":"RedHat","permalink":"/docs/3.13/install-rpm"},"next":{"title":"Windows","permalink":"/docs/3.13/install-windows"}}'),s=r(74848),t=r(28453),a=r(28412);let l={title:"Generic Binary Build",displayed_sidebar:"docsSidebar"},o='Generic Binary Build ("Generic UNIX Build")',d={},c=[{value:"Overview",id:"overview",level:2},{value:"Downloads",id:"downloads",level:2},{value:"Installation",id:"installation",level:2},{value:"Make Sure Erlang/OTP is Installed",id:"install-erlang",level:3},{value:"Install the Server",id:"install",level:3},{value:"Operations",id:"operations",level:2},{value:"Running and Managing the Node",id:"managing-node",level:3},{value:"Starting the Server",id:"starting-the-server",level:4},{value:"Stopping the Server",id:"stopping-the-server",level:4},{value:"Configuring the Server",id:"configuring-the-server",level:4},{value:"File Locations",id:"file-locations",level:3},{value:"Port Access",id:"ports",level:2},{value:"Default User Access",id:"default-user-access",level:2},{value:"Managing the Node",id:"managing",level:2},{value:"Controlling System Limits on Linux",id:"kernel-resource-limits",level:2},{value:"Verifying the Limit",id:"verifying-limits",level:3},{value:"Configuration Management Tools",id:"chef-puppet-bosh",level:3}];function h(e){let n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"generic-binary-build-generic-unix-build",children:'Generic Binary Build ("Generic UNIX Build")'})}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(n.p,{children:["RabbitMQ releases include a binary package for Linux, MacOS, and *BSD systems.\nIt is minimalistic and not opinionated in how it is installed, configured and managed.\nThis package is recommended in environments where more opinionated installation options\n(the ",(0,s.jsx)(n.a,{href:"./install-debian",children:"Debian"})," or ",(0,s.jsx)(n.a,{href:"./install-rpm",children:"RPM packages"}),", ",(0,s.jsx)(n.a,{href:"./install-homebrew",children:"Homebrew"}),", BSD ports) cannot be used.\nIt is also the most convenient option for running multiple versions on the same machine\nin development environments."]}),"\n",(0,s.jsxs)(n.p,{children:["There's a separate ",(0,s.jsx)(n.a,{href:"./install-windows-manual",children:"binary package for Windows"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Unlike with the cases of ",(0,s.jsx)(n.a,{href:"./install-debian",children:"Debian"}),", ",(0,s.jsx)(n.a,{href:"./install-rpm",children:"RPM"})," and ",(0,s.jsx)(n.a,{href:"./install-windows",children:"Windows installer"})," packages,\n",(0,s.jsx)(n.a,{href:"#managing-node",children:"node management"})," with this package type is performed solely using\n",(0,s.jsx)(n.a,{href:"./cli",children:"RabbitMQ CLI tools"})," or by the operator setting up e.g. a ",(0,s.jsx)(n.code,{children:"systemd"})," service manually."]}),"\n",(0,s.jsx)(n.h2,{id:"downloads",children:"Downloads"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Description"}),(0,s.jsx)(n.th,{children:"Download"}),(0,s.jsx)(n.th,{children:"Signature"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsxs)(n.td,{children:["Generic UNIX binary build (tar.xz, from ",(0,s.jsx)("a",{href:"https://github.com/rabbitmq/rabbitmq-server/releases",children:"GitHub"}),", recommended)"]}),(0,s.jsx)(n.td,{children:(0,s.jsx)("a",{href:(0,a.bh)({packageType:"generic-unix"}),children:(0,a.n3)({packageType:"generic-unix"})})}),(0,s.jsx)(n.td,{children:(0,s.jsx)("a",{href:(0,a.ci)({packageType:"generic-unix"}),children:"Signature"})})]})})]}),"\n",(0,s.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,s.jsx)(n.h3,{id:"install-erlang",children:"Make Sure Erlang/OTP is Installed"}),"\n",(0,s.jsxs)(n.p,{children:["This package requires a ",(0,s.jsx)(n.a,{href:"./which-erlang",children:"supported version of Erlang"})," to be installed\nin order to run."]}),"\n",(0,s.jsx)(n.h3,{id:"install",children:"Install the Server"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"#downloads",children:"Download"})," a ",(0,s.jsx)("code",{children:(0,s.jsx)(a.n3,{packageType:"generic-unix"})})," archive and extract it."]}),"\n",(0,s.jsxs)(n.p,{children:["Contained in the tarball is a directory named ",(0,s.jsx)("code",{children:(0,s.jsx)(a.lx,{})}),". This directory is the node base directory. It should be\nmoved to a suitable application directory on the system, such as ",(0,s.jsx)(n.code,{children:"/u
1sr/local"}),".\nThe ",(0,s.jsx)(n.code,{children:"sbin"})," directory in that directory contains server and ",(0,s.jsx)(n.a,{href:"./cli",children:"CLI tool"})," scripts.\nIt is a good candidate for including into ",(0,s.jsx)(n.code,{children:"PATH"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"operations",children:"Operations"}),"\n",(0,s.jsx)(n.h3,{id:"managing-node",children:"Running and Managing the Node"}),"\n",(0,s.jsxs)(n.p,{children:["Unlike some other installation methods, namely the ",(0,s.jsx)(n.a,{href:"./install-debian",children:"Debian"})," and ",(0,s.jsx)(n.a,{href:"./install-rpm",children:"RPM packages"}),", RabbitMQ\ngeneric UNIX binary build does not require ",(0,s.jsx)(n.code,{children:"sudo"}),". It can be uncompressed\ninto any location and started and managed using the scripts and ",(0,s.jsx)(n.a,{href:"./cli",children:"CLI tools"})," under ",(0,s.jsx)(n.code,{children:"sbin"}),".\nDefault ",(0,s.jsx)(n.a,{href:"./relocate",children:"data directory location"})," will be under ",(0,s.jsx)(n.code,{children:"./var"}),",\nthat is, in the installation directory."]}),"\n",(0,s.jsx)(n.h4,{id:"starting-the-server",children:"Starting the Server"}),"\n",(0,s.jsxs)(n.p,{children:["To start the server, run the ",(0,s.jsx)(n.code,{children:"sbin/rabbitmq-server"}),' script. This\ndisplays a short banner message, concluding with the message\n"completed with ',(0,s.jsx)("i",{children:"[n]"}),' plugins.", indicating that the\nRabbitMQ broker has been started successfully.\nTo start the server in "detached" mode, use\n',(0,s.jsx)(n.code,{children:"rabbitmq-server -detached"}),". This will run\nthe node process in the background."]}),"\n",(0,s.jsx)(n.h4,{id:"stopping-the-server",children:"Stopping the Server"}),"\n",(0,s.jsxs)(n.p,{children:["To stop a running node, use ",(0,s.jsx)(n.code,{children:"sbin/rabbitmqctl shutdown"}),". The command\nwill wait for the node process to stop. If the target node is not running,\nit will exit with an error."]}),"\n",(0,s.jsx)(n.h4,{id:"configuring-the-server",children:"Configuring the Server"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"./configure#configuration-files",children:"RabbitMQ configuration file"})," located at ",(0,s.jsx)(n.code,{children:"$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf"}),"\nis the primary way of configuring the node."]}),"\n",(0,s.jsxs)(n.p,{children:["It is possible to ",(0,s.jsx)(n.a,{href:"./configure#customise-environment",children:"use environment variables"})," to control certain settings.\nThe recommended way of doing that is using the ",(0,s.jsx)(n.code,{children:"$RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf"})," file."]}),"\n",(0,s.jsx)(n.p,{children:"Neither of these files exist after installation, so they must be created first."}),"\n",(0,s.jsxs)(n.p,{children:["See RabbitMQ ",(0,s.jsx)(n.a,{href:"./configure",children:"configuration guide"})," to learn more."]}),"\n",(0,s.jsx)(n.h3,{id:"file-locations",children:"File Locations"}),"\n",(0,s.jsxs)(n.p,{children:["The generic binary build is designed to run without granted\npermissions to directories outside of its base one. The ",(0,s.jsx)(n.a,{href:"./relocate",children:"directories and files"})," used by default are\nall held under the installation directory ",(0,s.jsx)("code",{children:(0,s.jsx)(a.lx,{})}),"\nwhich is in the ",(0,s.jsx)(n.code,{children:"$RABBITMQ_HOME"}),"\nvariable in the scripts."]}),"\n",(0,s.jsxs)(n.p,{children:["The node can be ",(0,s.jsx)(n.a,{href:"./relocate",children:"instructed"})," to use more\nconventional system directories for ",(0,s.jsx)(n.a,{href:"./configure",children:"configuration"}),",\nnode data directory, ",(0,s.jsx)(n.a,{href:"./logging",children:"log"})," files, ",(0,s.jsx)(n.a,{href:"./plugins",children:"plugins"})," and so on.\nIn order to make the node use operating system defaults, locate the following line"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"PREFIX=${RABBITMQ_HOME}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["in the ",(0,s.jsx)(n.code,{children:"sbin/rabbitmq-defaults"})," script and\nchange this line to:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"SYS_PREFIX=\n"})}),"\n",(0,s.jsx)(n.p,{children:"but do not modify any other line in this script."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Important"}),": after this modification the default directory\nlocations may point to non-existent directories or directories that the effective\nnode user won't have permissions for."]}),"\n",(0,s.jsxs)(n.p,{children:["In particular ",(0,s.jsx)(n.code,{children:"RABBITMQ_MNESIA_BASE"})," and\n",(0,s.jsx)(n.code,{children:"RABBITMQ_LOG_BASE"}
1)," may need to be created (the server will attempt to create them at startup), and the\n",(0,s.jsx)(n.a,{href:"./plugins",children:"enabled plugins file"})," (",(0,s.jsx)(n.code,{children:"RABBITMQ_ENABLED_PLUGINS_FILE"}),") will need\nto be writable by ",(0,s.jsx)(n.a,{href:"./cli",children:"rabbitmq-plugins"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["The configuration files will be looked for in ",(0,s.jsx)(n.code,{children:"/etc/rabbitmq/"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"ports",children:"Port Access"}),"\n",(0,s.jsxs)(n.p,{children:["RabbitMQ nodes bind to ports (open server TCP sockets) in order to accept client\nand CLI tool connections. Other processes and tools such as SELinux may prevent\nRabbitMQ from binding to a port. When that happens, the node will fail to start.\nRefer to the ",(0,s.jsx)(n.a,{href:"./networking#ports",children:"Networking Guide"})," for more details."]}),"\n",(0,s.jsx)(n.h2,{id:"default-user-access",children:"Default User Access"}),"\n",(0,s.jsxs)(n.p,{children:["The broker creates a user ",(0,s.jsx)(n.code,{children:"guest"})," with password\n",(0,s.jsx)(n.code,{children:"guest"}),". Unconfigured clients will in general use these\ncredentials. ",(0,s.jsx)("strong",{children:"By default, these credentials can only be\nused when connecting to the broker as localhost"})," so you\nwill need to take action before connecting from any other machine."]}),"\n",(0,s.jsxs)(n.p,{children:["See the documentation on ",(0,s.jsx)(n.a,{href:"./access-control",children:"access control"})," for information on how to create more users and delete\nthe ",(0,s.jsx)(n.code,{children:"guest"})," user."]}),"\n",(0,s.jsx)(n.h2,{id:"managing",children:"Managing the Node"}),"\n",(0,s.jsxs)(n.p,{children:["To stop the server or check its status, etc., you can invoke\n",(0,s.jsx)(n.code,{children:"sbin/rabbitmqctl"})," (as the user running\n",(0,s.jsx)(n.code,{children:"rabbitmq-server"}),"). All ",(0,s.jsx)(n.code,{children:"rabbitmqctl"}),"\ncommands will report the node absence if no broker is running."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Invoke ",(0,s.jsx)(n.code,{children:"rabbitmqctl stop"})," or ",(0,s.jsx)(n.code,{children:"rabbitmqctl shutdown"})," to stop the server"]}),"\n",(0,s.jsxs)(n.li,{children:["Invoke ",(0,s.jsx)(n.code,{children:"rabbitmq-diagnostics status"})," to check whether it is running"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["See ",(0,s.jsx)(n.a,{href:"./cli",children:"CLI tools guide"})," to learn more."]}),"\n",(0,s.jsx)(n.h2,{id:"kernel-resource-limits",children:"Controlling System Limits on Linux"}),"\n",(0,s.jsxs)(n.p,{children:["RabbitMQ installations running production workloads may need system\nlimits and kernel parameters tuning in order to handle a decent number of\nconcurrent connections and queues. The main setting that needs adjustment\nis the max number of open files, also known as ",(0,s.jsx)(n.code,{children:"ulimit -n"}),".\nThe default value on many operating systems is too low for a messaging\nbroker (",(0,s.jsx)(n.code,{children:"1024"})," on several Linux distributions). We recommend allowing\nfor at least 65536 file descriptors for user ",(0,s.jsx)(n.code,{children:"rabbitmq"})," in\nproduction environments. 4096 should be sufficient for many development\nworkloads."]}),"\n",(0,s.jsxs)(n.p,{children:["There are two limits in play: the maximum number of open files the OS kernel\nallows (",(0,s.jsx)(n.code,{children:"fs.file-max"})," on Linux, ",(0,s.jsx)(n.code,{children:"kern.maxfilesperproc"})," on OS X and FreeBSD) and the per-user limit (",(0,s.jsx)(n.code,{children:"ulimit -n"}),").\nThe former must be higher than the latter.\nFor more information about controlling the system-wide limit,\nplease refer to the excellent ",(0,s.jsx)(n.a,{href:"https://github.com/basho/basho_docs/blob/master/content/riak/kv/2.2.3/using/performance/open-files-limit.md",children:"Riak guide on open file limit tuning"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"verifying-limits",children:"Verifying the Limit"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"./management",children:"RabbitMQ management UI"})," displays the number of file descriptors available for it to use on the Overview tab."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"rabbitmq-diagnostics status\n"})}),"\n",(0,s.jsx)(n.p,{children:"includes the same value. The following command"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"ulimit -a\n"})}),"\n",(0,s.jsxs)(n.p,{children:["can be used to display effective limits for the current user. There may be more convenient\nOS-specific ways of doing that for a running process, such as the ",(0,s.jsx)(n.code,{children:"/proc"})," filesystem on Linux."]}),"\n",(0,s.jsx)(n.h3,{id:"chef-puppet-bosh",children:"Configuration Management Tools"}),"\n",(0,s.jsxs)(n.p,{children:["Configuration management tools (e.g. Chef, Puppet, BOSH) provide assistance\nwith 
1system limit tuning. Our ",(0,s.jsx)(n.a,{href:"/client-libraries/devtools",children:"developer tools"})," guide\nlists relevant modules and projects."]})]})}function u(e={}){let{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28412(e,n,r){r.d(n,{AR:()=>d,EF:()=>c,TJ:()=>o,VK:()=>m,bh:()=>h,ci:()=>u,lx:()=>f,n3:()=>p,ue:()=>g}),r(96540);var i=r(83384),s=r(80698);function t({branch:e}={branch:void 0}){return void 0===e&&(e=(0,s.ir)().label),e}function a(e){let n=t(e);return(0,i.CA)(n)}function l(e){let n=t(e),r=(0,i.Z0)(n);if(void 0===r)return;let{packageType:s}=e;return"package_revs"in r&&s in r.package_revs?r.package_revs[s]:"1"}function o(e={}){return t(e)}function d(e={}){return a(e)||"<unreleased>"}function c(e={}){let n=a(e);return void 0===n?"<unreleased>":`v${n}`}function h(e){let{packageType:n}=e,r=a(e);if(void 0===r)return"#";let i=c(),s=`https://github.com/rabbitmq/rabbitmq-server/releases/download/${i}`;switch(n){case"debian":let t=l(n);return`${s}/rabbitmq-server_${r.replaceAll("-",".")}-${t}_all.deb`;case"rpm-el8":let o=l(n);return`${s}/rabbitmq-server-${r.replaceAll("-",".")}-${o}.el8.noarch.rpm`;case"rpm-suse":let d=l(n);return`${s}/rabbitmq-server-${r.replaceAll("-",".")}-${d}.suse.noarch.rpm`;case"generic-unix":return`${s}/rabbitmq-server-generic-unix-${r}.tar.xz`;case"windows-installer":return`${s}/rabbitmq-server-${r}.exe`;case"windows-zip":return`${s}/rabbitmq-server-windows-${r}.zip`;default:throw Error(`Unknown RabbitMQ server package type ${package_type}`)}}function u(e){let n=h(e);return"#"!=n?`${n}.asc`:n}function m(e){let{packageType:n}=e;switch(n){case"debian":case"rpm-el8":case"rpm-suse":return l(n);default:throw Error(`No package revision for package type ${package_type}`)}}function p(e){let n=h(e);return"#"!=n?n.split("/").reverse()[0]:"<unreleased>"}function f(e={}){let n=a(e);return void 0===n?"<unreleased>":`rabbitmq_${n}`}function g(e={}){return f(e)}},83384(e,n,r){r.d(n,{Z0:()=>v,Az:()=>j,J3:()=>y,CA:()=>w});var i,s,t,a,l,o,d=r(74848),c=r(96540),h=r(10898),u=r(80698);function m(){return(m=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)({}).hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(null,arguments)}let p=({title:e,titleId:n,...r})=>c.createElement("svg",m({width:6,height:12,viewBox:"0 0 1.5875 3.175",id:"svg1",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},r),e?c.createElement("title",{id:n},e):null,i||(i=c.createElement("defs",{id:"defs1"})),s||(s=c.createElement("g",{id:"layer1",transform:"translate(-43.445422,-75.511109)"},c.createElement("path",{d:"m 43.445422,75.511109 v 3.175 l 1.5875,-1.5875 z",id:"path1",fill:"#000000",fillOpacity:1,stroke:"none",strokeWidth:"0.0214907px",strokeLinecap:"butt",strokeLinejoin:"miter",strokeOpacity:1}))));function f(){return(f=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)({}).hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(null,arguments)}let g=({title:e,titleId:n,...r})=>c.createElement("svg",f({width:740,height:740,viewBox:"0 0 22.2 22.2",id:"svg1",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},r),e?c.createElement("title",{id:n},e):null,t||(t=c.createElement("defs",{id:"defs1"})),a||(a=c.createElement("path",{d:"m 11.1,3.9157895 v 1.580518 H 2.7331443 V 20.019638 l 14.5231687,-1.6e-5 v -8.367004 l 1.580528,1.4e-5 v 8.36699 c 0,0.944268 -0.6712,1.580378 -1.580528,1.580378 H 2.7331443 C 1.8914216,21.6 1.1526319,20.879784 1.1526319,20.019622 V 5.4963075 c 0,-0.7831956 0.7534712,-1.580518 1.5805124,-1.580518 z m 0,11.7426205 v 1.520537 H 5.5736844 V 15.65841 Z m 3.315789,-3.31578 v 1.520528 H 5.5736844 V 12.34263 Z m 0,-3.31578 v 1.520518 H 5.5736844 V 9.02685 Z M 17.731578,2.8105264 18.767762,5.0901316 21.047368,6.1263158 18.767762,7.1625 17.731578,9.4421053 16.695394,7.1625 14.415789,6.1263158 16.695394,5.0901316 Z M 14.41579,0.6 15.10658,2.1197369 16.626316,2.8105264 15.10658,3.5013158 14.41579,5.0210527 13.725,3.5013158 12.205263,2.8105264 13.725,2.1197369 Z",id:"path1",strokeWidth:.75,strokeDasharray:"none",fillOpacity:1})));function x(){return(x=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)({}).hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(null,arguments)}let b=({title:e,titleId:n,...r})=>c.createElement("svg",x({fill:"#000000",width:740,height:740,viewBox:"0 0 29.6 29.6",enableBackgroun
1d:"new 0 0 32 32",id:"Layer_3",xmlSpace:"preserve",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":n},r),e?c.createElement("title",{id:n},e):null,l||(l=c.createElement("defs",{id:"defs4"})),o||(o=c.createElement("g",{id:"g4",transform:"translate(-1.2,-1.1996259)"},c.createElement("path",{d:"m 5.063,19.369 0.521,4.602 c 0.007,0.067 0.021,0.133 0.042,0.197 0.412,1.266 1.591,2.072 2.855,2.072 0.308,0 0.619,-0.048 0.927,-0.148 1.572,-0.512 2.436,-2.208 1.924,-3.781 l -0.83,-2.551 h 0.261 l 7.789,3.895 c 0.142,0.07 0.294,0.105 0.447,0.105 0.183,0 0.365,-0.05 0.525,-0.149 C 19.82,23.429 20,23.107 20,22.76 v -4.142 c 1.721,-0.447 3,-2 3,-3.858 0,-1.858 -1.279,-3.411 -3,-3.858 V 6.76 C 20,6.413 19.82,6.092 19.525,5.909 19.23,5.726 18.862,5.71 18.552,5.865 L 10.764,9.76 H 7 c -2.757,0 -5,2.243 -5,5 0,2.071 1.265,3.851 3.063,4.609 z M 9.43,22.93 C 9.601,23.454 9.314,24.019 8.789,24.19 8.29,24.353 7.757,24.101 7.558,23.628 L 7.119,19.76 H 8.398 Z M 21,14.76 c 0,0.737 -0.405,1.375 -1,1.722 v -3.443 c 0.595,0.346 1,0.984 1,1.721 z m -3,6.382 -6,-3 v -6.764 l 6,-3 z M 7,11.76 h 3 v 6 H 7 c -1.654,0 -3,-1.346 -3,-3 0,-1.654 1.346,-3 3,-3 z",id:"path1"}),c.createElement("path",{d:"m 27,15.76 h 2 c 0.553,0 1,-0.448 1,-1 0,-0.552 -0.447,-1 -1,-1 h -2 c -0.553,0 -1,0.448 -1,1 0,0.552 0.447,1 1,1 z",id:"path2"}),c.createElement("path",{d:"m 27,10.467 c 0.256,0 0.512,-0.098 0.707,-0.293 L 29.121,8.76 c 0.391,-0.391 0.391,-1.023 0,-1.414 -0.391,-0.391 -1.023,-0.391 -1.414,0 L 26.293,8.76 c -0.391,0.391 -0.391,1.023 0,1.414 0.195,0.196 0.451,0.293 0.707,0.293 z",id:"path3"}),c.createElement("path",{d:"m 27.707,22.174 c 0.195,0.195 0.451,0.293 0.707,0.293 0.256,0 0.512,-0.098 0.707,-0.293 0.391,-0.391 0.391,-1.023 0,-1.414 l -1.414,-1.414 c -0.391,-0.391 -1.023,-0.391 -1.414,0 -0.391,0.391 -0.391,1.023 0,1.414 z",id:"path4"}))));function j(){let{siteConfig:{customFields:{releaseBranches:{rabbitmq:e}}}}=(0,h.default)();return e}function v(e){let n=j()[e]||{};if(void 0!==n.releases)return n.releases[0]||void 0}function w(e){let n=v(e);if(void 0!==n)return n.version}function y(){let e=j(),n=(0,u.jh)(),r=Date.now(),i={year:"numeric",month:"short",day:"numeric",timeZone:"UTC"};var s=!1;
1let[t,a]=(0,c.useState)(void 0);var l=[];for(let c in e){let u=n.find(e=>e.name===c),j=e[c],T=j.releases||[],M=void 0!==j.end_of_support;var o=!0;for(let e in s=!!M&&void 0===h,T){let n=T[e],N=t===c?"show-release":"hide-release";var h,m,f,x,v,w,y="";(s?y="latest-release":M||(y="future-release"),M)?(m=[{type:"relnotes",url:`https://github.com/rabbitmq/rabbitmq-server/releases/tag/v${n.version}`}],n.links&&(m=m.concat(n.links)),m=(0,d.jsx)("ul",{children:m.map(function(e){switch(e.type){case"relnotes":return(0,d.jsx)("li",{children:(0,d.jsxs)("a",{href:e.url,className:`release-link release-link-${e.type}`,children:[(0,d.jsx)(g,{title:"Release Notes"}),(0,d.jsx)("span",{children:"Release Notes"})]})});case"announcement":return(0,d.jsx)("li",{children:(0,d.jsxs)("a",{href:e.url,className:`release-link release-link-${e.type}`,children:[(0,d.jsx)(b,{title:"Announcement"}),(0,d.jsx)("span",{children:"Announcement"})]})})}})})):m=(0,d.jsx)(d.Fragment,{}),f=M?(f=new Date(n.release_date)).toLocaleDateString("en-GB",i):"-";var k="-";let B="-";var S=!1;let _=!1;if(j.end_of_support){if(j.end_of_community_support)k=new Date(j.end_of_community_support);else if(h){let e=h.releases,n=new Date(e[e.length-1].release_date);k=new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth()+1,0))}else S=!0,k=(0,d.jsx)("abbr",{title:"Supported until the next major or minor release branch is published.",children:"Next release"});B=new Date(j.end_of_support)}{let e=k;e instanceof Date?(x=e>r?"supported-release":"unsupported-release",v=e.toLocaleDateString("en-GB",i)):(x=S?"supported-release":"unsupported-release",v=e),k=(0,d.jsx)("div",{className:["release-eos release-eos-community",x,y,o?"":N].join(" "),children:v})}B instanceof Date&&(_=B>r,B=B.toLocaleDateString("en-GB",i)),o&&(w=u?u.label:c,l.push((0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:["release-toggle",y,N].join(" "),onClick:e=>{a(t===c?void 0:c)},children:(0,d.jsx)(p,{})}),(0,d.jsx)("div",{className:["release-branch",y,o?"":N].join(" "),children:w})]}))),l.push((0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:["release-version",y,o?"":N].join(" "),children:n.version||"-"}),(0,d.jsx)("div",{className:["release-links",y,o?"":N].join(" "),children:m}),(0,d.jsx)("div",{className:["release-reldate",y,o?"":N].join(" "),children:f}),k,(0,d.jsx)("div",{className:["release-eos release-eos-commercial",_?"supported-release latest-release":"unsupported-release",o?"":N].join(" "),children:B})]})),o=!1}M&&(h=j)}return(0,d.jsxs)("div",{className:"release-information",children:[(0,d.jsx)("div",{className:"release-info-overflow",children:(0,d.jsxs)("div",{className:"release-info-grid",children:[(0,d.jsx)("div",{className:"release-info-header release-branch",children:"Release"}),(0,d.jsx)("div",{className:"release-info-header release-version",children:"Patch and associated docs"}),(0,d.jsx)("div",{className:"release-info-header release-reldate",children:"Date of Release"}),(0,d.jsx)("div",{className:"release-info-header release-eos release-eos-community",children:"End of Community Support"}),(0,d.jsx)("div",{className:"release-info-header release-eos release-eos-commercial",children:"End of Commercial Support*"}),l]})}),(0,d.jsx)("strong",{children:"Legend:"}),(0,d.jsxs)("dl",{className:"release-legend",children:[(0,d.jsx)("dt",{className:"supported-release latest-release"}),(0,d.jsx)("dd",{children:"Latest release series, fully supported"}),(0,d.jsx)("dt",{className:"unsupported-release"}),(0,d.jsx)("dd",{children:"Older release series, unsupported"}),void 0!==e.current.releases&&e.current.releases.length>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("dt",{className:"unsupported-release future-release"}),(0,d.jsx)("dd",{children:"Future version, unsupported"})]}):(0,d.jsx)(d.Fragment,{})]})]})}},28453(e,n,r){r.d(n,{R:()=>a,x:()=>l});var i=r(96540);let s={},t=i.createContext(s);function a(e){let n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.