Table of Contents
- 2.1. A Simple Messaging Program in C++
- 2.2. A Simple Messaging Program in Python
- 2.3. A Simple Messaging Program in .NET C#
- 2.4. Addresses
- 2.5. Sender Capacity and Replay
- 2.6. Receiver Capacity (Prefetch)
- 2.7. Acknowledging Received Messages
- 2.8. Receiving Messages from Multiple Sources
- 2.9. Transactions
- 2.10. Connection Options
- 2.11. Maps and Lists in Message Content
- 2.12. The Request / Response Pattern
- 2.13. Performance Tips
- 2.14. Cluster Failover
- 2.15. Logging
- 2.16. The AMQP 0-10 mapping
- 2.17. Using Message Groups
The Qpid Messaging API is quite simple, consisting of only a handful of core classes.
A message consists of a standard set of fields (e.g.
subject
,reply-to
), an application-defined set of properties, and message content (the main body of the message).A connection represents a network connection to a remote endpoint.
A session provides a sequentially ordered context for sending and receiving messages. A session is obtained from a connection.
A sender sends messages to a target using the
sender.send
method. A sender is obtained from a session for a given target address.A receiver receives messages from a source using the
receiver.fetch
method. A receiver is obtained from a session for a given source address.
The following sections show how to use these classes in a simple messaging program.
The following C++ program shows how to create a connection, create a session, send messages using a sender, and receive messages using a receiver.
Example 2.1. "Hello world!" in C++
#include <qpid/messaging/Connection.h> #include <qpid/messaging/Message.h> #include <qpid/messaging/Receiver.h> #include <qpid/messaging/Sender.h> #include <qpid/messaging/Session.h> #include <iostream> using namespace qpid::messaging; int main(int argc, char** argv) { std::string broker = argc > 1 ? argv[1] : "localhost:5672"; std::string address = argc > 2 ? argv[2] : "amq.topic"; std::string connectionOptions = argc > 3 ? argv[3] : ""; Connection connection(broker, connectionOptions); try { connection.open(); (1) Session session = connection.createSession(); (2) Receiver receiver = session.createReceiver(address); (3) Sender sender = session.createSender(address); (4) sender.send(Message("Hello world!")); Message message = receiver.fetch(Duration::SECOND * 1); (5) std::cout << message.getContent() << std::endl; session.acknowledge(); (6) connection.close(); (7) return 0; } catch(const std::exception& error) { std::cerr << error.what() << std::endl; connection.close(); return 1; } }
Establishes the connection with the messaging broker. | |
Creates a session object on which messages will be sent and received. | |
Creates a receiver that receives messages from the given address. | |
Creates a sender that sends to the given address. | |
Receives the next message. The duration is optional, if omitted, will wait indefinitely for the next message. | |
Acknowledges receipt of all fetched messages on the session. This informs the broker that the messages were transferred and processed by the client successfully. | |
Closes the connection, all sessions managed by the connection, and all senders and receivers managed by each session. |