Qpid Proton C++ API  master

The Qpid Proton C++ API enables writing clients and servers that send and receive messages using the AMQP protocol. It is part of the Qpid Proton suite of messaging APIs.

The Overview presents the API's central concepts and mechanics.

The Tutorial guides you through some basic examples. See Examples for a complete list of the sample programs, including more advanced ones.

Qpid Proton C++ can be used in single- and multithreaded applications. See Multithreading for guidance on writing efficient multithreaded messaging applications.


The main proton namespace contains classes and functions representing AMQP concepts and key elements of the API. Together they form a "protocol engine" API to create AMQP connections and links, handle events, and send and receive messages. See Overview for more information.

The main proton namespace also contains C++ classes and functions for handling AMQP- and API-specific data types. See AMQP and C++ types for more information.

The proton::codec namespace contains interfaces for AMQP data encoding and decoding.

The proton::io namespace contains interfaces for integrating with platform-native network IO. See IO integration for more information.


Elements of the API marked as Unsettled API, including any elements contained within them, are still evolving and thus are subject to change. They are available to use, but newer versions of Proton may require changes to your application source code.

Elements marked Deprecated are slated for removal in a future release.

Sections labeled Thread safety describe when and where it is safe to call functions or access data across threads.

Sections called C++ versions discuss features the API that depend on particular versions of C++ such as C++11.


The API uses URLs to identify three different kinds of resources. All URL argument names are suffixed with _url.

Connection URLs (conn_url in argument lists) specify a target for outgoing network connections. The path part of the URL is ignored.

Address URLs (addr_url) extend the connection URL to reference an AMQP node such as a queue or topic. The path of the URL, minus the leading slash, is treated as the AMQP address of the node.

Listener URLs (listen_url) specify a local network address and port for accepting incoming TCP connections.