OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0
Part 0: Overview
OASIS Standard
29 October 2012
Specification URIs
This version:
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.xml (Authoritative)
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf
Previous version:
http://docs.oasis-open.org/amqp/core/v1.0/csprd01/amqp-core-overview-v1.0-csprd01.xml (Authoritative)
http://docs.oasis-open.org/amqp/core/v1.0/csprd01/amqp-core-overview-v1.0-csprd01.html
http://docs.oasis-open.org/amqp/core/v1.0/csprd01/amqp-core-complete-v1.0-csprd01.pdf
Latest version:
http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-overview-v1.0.xml (Authoritative)
http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-overview-v1.0.html
http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-complete-v1.0.pdf
Technical Committee:
OASIS Advanced Message Queuing Protocol (AMQP) TC
Chairs:
Ram Jeyaraman (Ram.Jeyaraman@microsoft.com), Microsoft
Angus Telfer (angus.telfer@inetco.com), INETCO Systems
Editors:
Robert Godfrey (robert.godfrey@jpmorgan.com), JPMorgan Chase & Co.
David Ingham (David.Ingham@microsoft.com), Microsoft
Rafael Schloming (rafaels@redhat.com), Red Hat
Additional artifacts:
This specification consists of the following documents:
· Part 0: Overview (this document) - Overview of the AMQP specification
· Part 1: Types - AMQP type system and encoding
· Part 2: Transport - AMQP transport layer
· Part 3: Messaging - AMQP Messaging Layer
· Part 4: Transactions - AMQP Transactions Layer
· Part 5: Security - AMQP Security Layers
· XML Document Type Definition (DTD)
Related work:
This specification replaces or supersedes:
· AMQP v1.0 Final, 07 October 2011. http://www.amqp.org/specification/1.0/amqp-org-download
Abstract:
The Advanced Message Queuing Protocol (AMQP) is an open internet protocol for business messaging. It defines a binary wire-level protocol that allows for the reliable exchange of business messages between two parties. AMQP has a layered architecture and the specification is organized as a set of parts that reflects that architecture. Part 1 defines the AMQP type system and encoding. Part 2 defines the AMQP transport layer, an efficient, binary, peer-to-peer protocol for transporting messages between two processes over a network. Part 3 defines the AMQP message format, with a concrete encoding. Part 4 defines how interactions can be grouped within atomic transactions. Part 5 defines the AMQP security layers.
Status:
This document was last revised or approved by the membership of OASIS on the above date. The level of approval is also listed above. Check the "Latest version" location noted above for possible later revisions of this document.
Technical Committee members should send comments on this specification to the Technical Committee's email list. Others should send comments to the Technical Committee by using the "Send A Comment" button on the Technical Committee's web page at http://www.oasis-open.org/committees/comments/amqp/.
For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page (http://www.oasis-open.org/committees/amqp/ipr.php).
Citation format:
When referencing this specification the following citation format should be used:
[amqp-core-overview-v1.0]
OASIS Advanced Message Queuing Protocol (AMQP) Version 1.0 Part 0: Overview. 29 October 2012. OASIS Standard. http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-overview-v1.0-os.html.
Notices
Copyright © OASIS Open 2012. All Rights Reserved.
All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.
OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.
The name "OASIS" is a trademark of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see http://www.oasis-open.org/policies-guidelines/trademark for above guidance.
0.1 Introduction |
0.1.1 Terminology |
0.1.2 Normative References |
0.1.3 Non-normative References |
0.2 Conformance |
0.3 Acknowledgements |
0.4 Revision History |
The Advanced Message Queuing Protocol is an open internet protocol for business messaging.
AMQP is comprised of several layers. The lowest level defines an efficient, binary, peer-to-peer protocol for transporting messages between two processes over a network. Above this, the messaging layer defines an abstract message format, with concrete standard encoding. Every compliant AMQP process MUST be able to send and receive messages in this standard encoding.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in IETF RFC 2119 [RFC2119].
The authoritative form of the AMQP specification consists of a set of XML source documents. These documents are transformed into PDF and HTML representations for readability. The machine readable version of the AMQP DTD describes the XML used for the authoritative source documents. This DTD includes the definition of the syntax used in the excerpts of XML presented in the PDF and HTML representations.
[ASCII]
American National Standards Institute, Inc.,
American National Standard for Information Systems, Coded Character Sets
- 7-Bit American National Standard Code for Information Interchange (7-Bit
ASCII), ANSI X3.4-1986, March 26, 1986.
[BCP47]
A. Phillips, Ed., M. Davis, Ed., Tags for Identifying Languages.
IETF BCP: 47, September 2009.
http://www.ietf.org/rfc/bcp/bcp47.txt
[IANAHTTPPARAMS]
IANA (Internet Assigned Numbers Authority),
Hypertext Transfer Protocol (HTTP) Parameters.
http://www.iana.org/assignments/http-parameters/http-parameters.xml
[IANAPEN]
IANA (Internet Assigned Numbers Authority), Private Enterprise Numbers.
http://www.iana.org/assignments/enterprise-numbers
[IANASUBTAG]
IANA (Internet Assigned Numbers Authority), Language Subtag Registry.
http://www.iana.org/assignments/language-subtag-registry
[IEEE754]
Standard for Floating-Point Arithmetic.
IEEE 754-2008, August 2008.
http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
[IEEE1003]
The Single UNIX Specification, Version 4.
IEEE Std 1003.1-2008, December 2008.
http://www.unix.org/version4/
[RFC1982]
R. Elz, R. Bush,
Serial Number Arithmetic.
IETF RFC 1982, August 1996.
http://www.ietf.org/rfc/rfc1982.txt
[RFC2046]
N. Freed, N. Borenstein,
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.
IETF RFC 2046, November 1996.
http://www.ietf.org/rfc/rfc2046.txt
[RFC2119]
S. Bradner, Key words for use in RFCs to Indicate Requirement Levels.
IETF RFC 2119, March 1997.
http://www.ietf.org/rfc/rfc2119.txt
[RFC2234]
D. Crocker, Ed., P. Overell,
Augmented BNF for Syntax Specifications: ABNF.
IETF RFC 2234, November 1997.
http://www.ietf.org/rfc/rfc2234.txt
[RFC2616]
R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee,
Hypertext Transfer Protocol -- HTTP/1.1.
IETF RFC 2616, June 1999.
http://www.ietf.org/rfc/rfc2616.txt
[RFC4122]
P. Leach, M. Mealling, R. Salz,
A Universally Unique IDentifier (UUID) URN Namespace.
IETF RFC 4122, July 2005.
http://www.ietf.org/rfc/rfc4122.txt
[RFC4366]
S. Blake-Wilson, M. Nystrom, D. Hopwood, J. Mikkelsen, T. Wright,
Transport Layer Security (TLS) Extensions.
IETF RFC 4366, April 2006.
http://www.ietf.org/rfc/rfc4366.txt
[RFC4422]
A. Melnikov, Ed., K. Zeilenga, Ed.,
Simple Authentication and Security Layer (SASL).
IETF RFC 4422, June 2006.
http://www.ietf.org/rfc/rfc4422.txt
[RFC4616]
K. Zeilenga, Ed., The PLAIN Simple Authentication and Security Layer (SASL)
Mechanism. IETF RFC 4616, August 2006.
http://www.ietf.org/rfc/rfc4616.txt
[RFC5246]
T. Dierks, E. Rescorla.,
The Transport Layer Security (TLS) Protocol Version 1.2.
IETF RFC 5246, August 2008.
http://www.ietf.org/rfc/rfc5246.txt
[RFC5646]
A. Phillips, Ed., M. Davis, Ed., Tags for Identifying Languages.
IETF RFC 5646, September 2009.
http://www.ietf.org/rfc/rfc5646.txt
[RFC5802]
C. Newman, A. Menon-Sen, A. Melnikov, N. Williams, Salted Challenge Response
Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms. IETF RFC 5802, July 2010.
http://www.ietf.org/rfc/rfc5802.txt
[UNICODE6]
The Unicode Consortium. The Unicode Standard, Version 6.0.0,
(Mountain View, CA: The Unicode Consortium, 2011. ISBN 978-1-936213-01-6)
http://www.unicode.org/versions/Unicode6.0.0/
[AMQPCONNCAP]
AMQP Capabilities Registry: Connection Capabilities
http://www.amqp.org/specification/1.0/connection-capabilities
[AMQPCONNPROP]
AMQP Capabilities Registry: Connection Properties
http://www.amqp.org/specification/1.0/connection-properties
[AMQPDELANN]
AMQP Capabilities Registry: Delivery Annotations
http://www.amqp.org/specification/1.0/delivery-annotations
[AMQPDISTMODE]
AMQP Capabilities Registry: Distribution Modes
http://www.amqp.org/specification/1.0/distribution-modes
[AMQPFILTERS]
AMQP Capabilities Registry: Filters
http://www.amqp.org/specification/1.0/filters
[AMQPFOOTER]
AMQP Capabilities Registry: Footer
http://www.amqp.org/specification/1.0/footer
[AMQPLINKCAP]
AMQP Capabilities Registry: Link Capabilities
http://www.amqp.org/specification/1.0/link-capabilities
[AMQPLINKPROP]
AMQP Capabilities Registry: Link Properties
http://www.amqp.org/specification/1.0/link-properties
[AMQPLINKSTATEPROP]
AMQP Capabilities Registry: Link State Properties
http://www.amqp.org/specification/1.0/link-state-properties
[AMQPMESSANN]
AMQP Capabilities Registry: Message Annotations
http://www.amqp.org/specification/1.0/message-annotations
[AMQPNODEPROP]
AMQP Capabilities Registry: Node Properties
http://www.amqp.org/specification/1.0/node-properties
[AMQPSESSCAP]
AMQP Capabilities Registry: Session Capabilities
http://www.amqp.org/specification/1.0/session-capabilities
[AMQPSESSPROP]
AMQP Capabilities Registry: Session Properties
http://www.amqp.org/specification/1.0/session-properties
[AMQPSOURCECAP]
AMQP Capabilities Registry: Source Capabilities
http://www.amqp.org/specification/1.0/source-capabilities
[AMQPTARGETCAP]
AMQP Capabilities Registry: Target Capabilities
http://www.amqp.org/specification/1.0/target-capabilities
AMQP defines a wire level protocol for business messaging. The definition allows for all common business messaging behaviors. AMQP does not define a wire-level distinction between "clients" and "brokers", the protocol is symmetric. It is expected and encouraged that implementations of AMQP will have different capabilities. Expectations of the capabilities of a "client library" are different from expectations of a "broker" which are themselves different from the capabilities of a "router". As relevant profiles emerge (where appropriate and applicable) these will be formalised.
A conformant implementation MUST perform protocol negotiation (see section 2.2), and then parse, process, and produce frames in accordance with the format and semantics defined in parts 1 through 5 of this specification.
Conformant implementations MUST NOT require the use of any extensions defined outside this document in order to interoperate with any other conformant implementation.
Part 1 of this document defines the type system and type encodings that every conformant implementation MUST implement.
Part 2 defines the peer-to-peer transport protocol which operates over TCP. Every conformant implementation of AMQP over TCP MUST implement Part 2. Future standards mapping AMQP to protocols other than TCP MAY modify or replace Part 2 when AMQP is being used over that protocol. A conformant implementation MUST implement Part 2 or a mapping of AMQP to some non-TCP protocol.
Part 2 admits behaviors that might not be appropriate for every implementation. For example a "client library" might not allow for its communication partner to spontaneously attempt to initiate a connection and request messages. Where an implementation does not allow for a behavior the implementation MUST respond according to the rules defined within Part 2 of the specification.
Part 3 of this document defines the AMQP Messaging Layer. Every conformant implementation which processes messages MUST implement this part of the specification.
Some implementations might not process messages (for example, an implementation acting as a "router" which looks only at the routing information carried by the AMQP Transport layer). Such implementations do not actively implement Part 3, but MUST NOT act in ways which violate the rules of this part of the specification.
The Messaging layer admits behaviors that might not be appropriate for all implementations (and within an implementation all behaviors might not be available for all configurations). Where a behavior is not admitted, the implementation MUST respond according to the rules defined within this specification.
Part 4 defines the requirements for transactional messaging. Transactional messaging defines two roles, that of the transactional resource and that of the transaction controller. A conformant implementation SHOULD be capable of operating in one of these roles but MAY be unable to operate in either (for instance a simplistic client library might have no ability to act as a transaction controller and would not be expected to act as a transactional resource).
It is RECOMMENDED that implementations designed to act as messaging intermediaries support the ability to act as a transactional resource. It is RECOMMENDED that implementations or re-usable libraries provide Application Programming Interfaces to enable them to act as transactional controllers.
Where a behavior is not admitted, the rules defined in part 4 regarding responses to non-admitted behaviors MUST be followed.
Part 5 defines Security Layers to provide an authenticated and/or encrypted transport. Implementations SHOULD allow the configuration of appropriate levels of security for the domain in which they are to be deployed.
Conformant implementations acting in the TCP server role are strongly RECOMMENDED to implement section 5.2 (or subsection 5.2.1). Implementations acting in the TCP server role are strongly RECOMMENDED to implement section 5.3 and to support commonly used SASL mechanisms. In particular such implementations SHOULD support the PLAIN [RFC4616] and SCRAM-SHA1 [RFC5802] mechanisms.
Conformant implementations acting in the TCP client role SHOULD be capable of being configured to connect to an implementation in the TCP server role that is following the recommendations above.
The following individuals have contributed significantly towards the creation of this specification and are gratefully acknowledged:
The following individuals were members of the OASIS AMQP Technical Committee during the creation of this specification and their contributions are gratefully acknowledged:
OASIS Standard : 2012-10-29 |
---|
Candidate OASIS Standard 01 : 2012-08-07 | |
---|---|
AMQP-74 : | HTML Rendering contains broken cross reference links for fields of primitive types |
Committee Specification 1 : 2012-07-18 | |
---|---|
AMQP-75 : | Minor corrections to the front matter |
Committee Specification Public Review Draft 2 : 2012-05-29 |
---|
Committee Specification Draft 2 : 2012-05-29 |
---|
Working Draft 9 : 2012-05-28 | |
---|---|
AMQP-71 : | Update acknowledgements to reflect current TC member list |
AMQP-72 : | In the PDF, add explicit links to all Parts of the document (including DTD) and state authoritative version |
AMQP-73 : | add clarity to document composition and XML excerpts |
Working Draft 8 : 2012-05-15 | |
---|---|
AMQP-62 : | Better explain the role of the XML notation used in the specification and its relation to the wire format |
AMQP-63 : | Improve the conformance section |
AMQP-64 : | Fix typo in 2.1, second sentence needs initial capital letter |
AMQP-65 : | Better explain the relationship between links, connections, channels and sessions |
AMQP-66 : | Remove non-normative use of RFC2119 keywords |
AMQP-67 : | Improve presentation of the Revision History of the document |
AMQP-69 : | Fix rendering of sub- and superscript in HTML |
Committee Specification Public Review Draft 1 : 2012-02-21 |
---|
Committee Specification Draft 1 : 2012-02-21 |
---|
Working Draft 7 : 2012-02-20 | |
---|---|
AMQP-56 : | Fix links to non-normative AMQP Capabilities and Related Work |
AMQP-61 : | Fixes to front-matter presentation |
Working Draft 6 : 2012-02-15 | |
---|---|
AMQP-58 : | Fix capitalization of headings on front page material |
AMQP-59 : | Add missing acknowledgments |
AMQP-60 : | Correct PDF ToC entry for DTD |
Working Draft 5 : 2012-02-13 | |
---|---|
AMQP-50 : | Section 3.2.16 is rendered differently in the html and pdf versions of the draft. |
AMQP-51 : | Add missing acknowledgments |
AMQP-52 : | Appendix A DTD is missing in the PDF document. |
AMQP-53 : | Add Revision History |
AMQP-54 : | Fix capitalization differences between HTML and PDF on front page |
AMQP-55 : | Change labeling of DTD on front page |
AMQP-57 : | Unresolved cross references due to removal of redundant subsection |
Working Draft 4 : 2012-02-02 | |
---|---|
AMQP-43 : | Review comments from Ram Jeyaraman |
Working Draft 3 : 2012-02-01 | |
---|---|
AMQP-29 : | Add introductory description of the spec's XML schema |
AMQP-36 : | Clarify that delivery-count is not a count (in 2.6.7 and 2.7.4) |
AMQP-37 : | Improve description of snd-settle-mode and rcv-settle-mode |
AMQP-38 : | Provide more information as to how an incomplete settled map is resolved |
AMQP-39 : | Clarify settlement on multi-transfer deliveries |
AMQP-41 : | Rephrase language around keys in annotations |
AMQP-42 : | Clarify use of error field in rejected outcome |
AMQP-44 : | Specification should refer to AMQP.org document as related (superseded) work |
AMQP-47 : | Messaging: Incorporate feedback from Steve Huston's review |
Working Draft 2 : 2012-01-24 | |
---|---|
AMQP-7 : | Typo in SaslInit.hostname description |
AMQP-8 : | Slight contradiction in description of hostname in SaslInit and TLS SNI |
AMQP-9 : | Could we add a repository for node-properties? |
AMQP-10 : | Could we have a repository for additional supported-dist-modes? |
AMQP-11 : | Message Properties.content-type MIME types need adjustment to fit new section types |
AMQP-12 : | Labelling of headers and section numbers as per the AMQP WG document... |
AMQP-13 : | Typo: Transactions in 4.4.1 transactional Posting "Settles" - > "Settle" |
AMQP-14 : | PDF Document should use Sans-Serif font to be consistent with OASIS Standards |
AMQP-15 : | Move copyright statement to second line of footer to be in line with OASIS style |
AMQP-16 : | References to INETCO should be "INETCO Systems Limited" |
AMQP-17 : | Typo in AMQP Open.hostname description |
AMQP-18 : | Add figure titles to the HTML presentation |
AMQP-19 : | Fix generated (sub-)section titles in the PDF where they contain a dash ("-") |
AMQP-20 : | PDF Presentation: use correct "open" and "close" double quotes |
AMQP-21 : | Change presentation of cross-references to show only section number, not title |
AMQP-22 : | Transport: Incoporate feedback from Steve Huston's review |
AMQP-23 : | Abstract/Introduction: Incoporate feedback from Steve Huston's review |
AMQP-24 : | Update XML transformation to render "n byte" as "n-byte" |
AMQP-25 : | Types: Incoporate feedback from Steve Huston's review |
AMQP-26 : | Transport: Incoporate feedback from Steve Huston's review (2) |
AMQP-27 : | add missing diagram titles |
AMQP-28 : | Confused use of the terms two's-complement" and "signed" |
AMQP-30 : | Clarify version negotiation |
AMQP-31 : | Figure numbering incorrect in the HTML presentation |
AMQP-32 : | Clarify open behavior |
AMQP-33 : | Tighten conformance language for 2.4.5 |
AMQP-34 : | Add description of HDR_EXCH state in 2.4.6 |
AMQP-35 : | Clarifications to 2.6.12 |
AMQP-40 : | Incorrect title for IEEE1003 reference |
AMQP-45 : | Transactions: Incorporate feedback from Steve Huston's review |
AMQP-46 : | Security: Incorporate feedback from Steve Huston's review |
AMQP-48 : | Remove capitalization of certain terms within the specification |
AMQP-49 : | Description of "dynamic" field refers to non-existent concepts of "session name" and "client-id" |
Working Draft 1 : 2011-11-08 | |
---|---|
AMQP-1 : | Make the definition of flow.echo more explicit |
AMQP-2 : | Make it explicit that flow.properties is only for a link |
AMQP-3 : | specification/overview.xml has a contributor's name in all caps |
AMQP-4 : | specification/overview.xml is slightly inconsistent in use of company legal entity names and abbreviations thereof |
Part 1: Types >> |