PageSourceSearch

https://rabbitmq-website.pages.dev/assets/js/8bb04e79.344c7438.js

js rabbitmq-website.pages.dev collected 2026-10-03 05:33:16 UTC 6,868 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkrabbitmq_website=self.webpackChunkrabbitmq_website||[]).push([["17723"],{88759(e,s,t){t.r(s),t.d(s,{metadata:()=>i,default:()=>c,frontMatter:()=>a,contentTitle:()=>o,toc:()=>h,assets:()=>l});var i=JSON.parse('{"id":"protocols","title":"Which protocols does RabbitMQ support?","description":"\x3c!--","source":"@site/versioned_docs/version-4.1/protocols.md","sourceDirName":".","slug":"/protocols","permalink":"/docs/4.1/protocols","draft":false,"unlisted":false,"editUrl":"https://github.com/rabbitmq/rabbitmq-website/tree/main/versioned_docs/version-4.1/protocols.md","tags":[],"version":"4.1","frontMatter":{"title":"Which protocols does RabbitMQ support?","displayed_sidebar":"docsSidebar"},"sidebar":"docsSidebar","previous":{"title":"Installing 3rd-party Plugins","permalink":"/docs/4.1/installing-plugins"},"next":{"title":"AMQP 1.0","permalink":"/docs/4.1/amqp"}}'),r=t(74848),n=t(28453);let a={title:"Which protocols does RabbitMQ support?",displayed_sidebar:"docsSidebar"},o="Which protocols does RabbitMQ support?",l={},h=[{value:"AMQP 0-9-1",id:"amqp-091",level:2},{value:"AMQP 1.0",id:"amqp-10",level:2},{value:"RabbitMQ Streams",id:"rabbitmq-streams",level:2},{value:"MQTT",id:"mqtt",level:2},{value:"STOMP",id:"stomp",level:2},{value:"HTTP and WebSockets",id:"http-and-websockets",level:2}];function d(e){let s={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"which-protocols-does-rabbitmq-support",children:"Which protocols does RabbitMQ support?"})}),"\n",(0,r.jsx)(s.p,{children:"RabbitMQ supports several messaging protocols, directly and through the\nuse of plugins. This page describes the supported protocols and\nhelps differentiate between them."}),"\n",(0,r.jsx)(s.h2,{id:"amqp-091",children:"AMQP 0-9-1"}),"\n",(0,r.jsxs)(s.p,{children:["RabbitMQ was originally developed to ",(0,r.jsx)(s.a,{href:"/amqp-0-9-1-protocol",children:"support AMQP 0-9-1"}),'.\nAs such this protocol has been the first "core" protocol supported by\nthe broker. We have ',(0,r.jsx)(s.a,{href:"./extensions",children:"extended"})," AMQP 0-9-1 in various ways."]}),"\n",(0,r.jsxs)(s.p,{children:["AMQP 0-9-1 is a binary protocol, and defines quite strong\nmessaging semantics. For clients it's a reasonably easy\nprotocol to implement, and as such there\nare ",(0,r.jsx)(s.a,{href:"/client-libraries/devtools",children:"a large number of client libraries"})," available for\nmany different programming languages and environments."]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/tutorials",children:"RabbitMQ tutorials"})," are available for AMQP 0-9-1."]}),"\n",(0,r.jsx)(s.h2,{id:"amqp-10",children:"AMQP 1.0"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"./amqp",children:"AMQP 1.0"})," is a more modern protocol.\nIt is an ",(0,r.jsx)(s.a,{href:"https://www.iso.org/standard/64955.html",children:"ISO/IEC 19464"})," and ",(0,r.jsx)(s.a,{href:"https://www.amqp.org/node/102",children:"OASIS"})," standard."]}),"\n",(0,r.jsx)(s.p,{children:"Despite the name, AMQP 1.0 is a very different protocol from AMQP 0-9-1 / 0-9 / 0-8, sharing nothing at the wire level.\nAMQP 1.0 imposes fewer semantic requirements and is therefore supported by more message brokers.\nThe protocol is more complex than AMQP 0-9-1, and there are fewer client implementations."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/blog/2024/08/05/native-amqp",children:'AMQP 1.0 has become a "core" protocol in RabbitMQ 4.0'}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"rabbitmq-streams",children:"RabbitMQ Streams"}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.a,{href:"https://github.com/rabbitmq/rabbitmq-server/blob/v3.13.x/deps/rabbitmq_stream/docs/PROTOCOL.adoc",children:"RabbitMQ Streams protocol"})," allows communicating with ",(0,r.jsx)(s.a,{href:"./streams",children:"streams"})," at very high throughput.\nRabbitMQ supports the streams protocol natively via a ",(0,r.jsx)(s.a,{href:"./stream",children:"plugin"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"/tutorials",children:"RabbitMQ tutorials"})," are available for the RabbitMQ Streams protocol."]}),"\n",(0,r.jsx)(s.h2,{id:"mqtt",children:"MQTT"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"http://mqtt.org/",children:"MQTT"})," is a binary protocol\nemphasising lightweight publish / subscribe messaging,\ntargeted towards clients in constrained devices. It has\nwell defined messaging semantics for publish / subscribe,\nbut not for other messaging idioms."]}),"\n",(0,r.jsxs)(s.p,{children:["RabbitMQ supports MQTT versions 3.1, 3.1.1, and 5.0 ",(0,r.jsx)(s.a,{href:"/blog/2023/03/21/native-mqtt",children:"natively"})," via a ",(0,r.jsx)(s.a,{href:"./mqtt",children:"plugin"}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"stomp",children:"STOMP"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.a,{href:"http://stomp.github.io/",children:"STOMP"})," is a text-based\nmessaging protocol emphasising (protocol) simplicity. It\ndefines little in the way of messaging semantics, but is\neasy to implement and very easy to implement partially (it's\nthe only protocol that can be used by hand over telnet)."]}),"\n",(0,r.jsxs)(s.p,{children:["RabbitMQ supports STOMP (all current versions) via\na ",(0,r.jsx)(s.a,{href:"./stomp",children:"plugin"})," by proxying internally over AMQP 0-9-1."]}),"\n",(0,r.jsx)(s.h2,{id:"http-and-websockets",children:"HTTP and WebSockets"}),"\n",(0,r.jsx)(s.p,{children:"While HTTP is not really a messaging protocol,\nRabbitMQ can transmit messages over HTTP in three ways:"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["The ",(0,r.jsx)(s.a,{href:"./web-stomp",children:"Web STOMP plugin"})," supports STOMP\nmessaging to the browser using WebSockets."]}),"\n",(0,r.jsxs)(s.li,{children:["The ",(0,r.jsx)(s.a,{href:"./web-mqtt",children:"Web MQTT plugin"})," supports MQTT\nmessaging to the browser using WebSockets."]}),"\n",(0,r.jsxs)(s.li,{children:["The ",(0,r.jsx)(s.a,{href:"./management",children:"management plugin"})," supports a\nsimple HTTP API to send and receive messages. This is primarily\nintended for diagnostic purposes but can be used for low volume\nmessaging without ",(0,r.jsx)(s.a,{href:"./reliability",children:"reliable delivery"}),"."]}),"\n"]})]})}function c(e={}){let{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},28453(e,s,t){t.d(s,{R:()=>a,x:()=>o});var i=t(96540);let r={},n=i.createContext(r);function a(e){let s=i.useContext(n);return i.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(n.Provider,{value:s},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.