Programming in Apache Qpid

Cross-Platform AMQP Messaging in Java JMS, .NET, C++, and Python


Table of Contents

1. Introduction
2. Using the Qpid Messaging API
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.4.1. Address Strings
2.4.2. Subjects
2.4.3. Address String Options
2.4.4. Address String Grammar
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 in Message Content
2.11.1. Qpid Maps in Python
2.11.2. Qpid Maps in C++
2.11.3. Qpid Maps in .NET
2.12. The Request / Response Pattern
2.13. Performance Tips
2.14. Cluster Failover
2.15. Logging
2.15.1. Logging in C++
2.15.2. Logging in Python
2.16. The AMQP 0-10 mapping
3. Using the Qpid JMS client
3.1. A Simple Messaging Program in Java JMS
3.2. Apache Qpid JNDI Properties for AMQP Messaging
3.2.1. JNDI Properties for Apache Qpid
3.2.2. Connection URLs
3.3. Java JMS Message Properties
3.4. JMS MapMessage Types
3.5. JMS Client Logging
4. Using the Qpid WCF client
4.1. XML and Binary Bindings
4.2. Endpoints
4.3. Message Headers
4.4. Security
4.5. Transactions
5. The .NET Binding for the C++ Messaging Client
5.1. .NET Binding for the C++ Messaging Client Component Architecture
5.2. .NET Binding for the C++ Messaging Client Examples
5.3. .NET Binding Class Mapping to Underlying C++ Messaging API
5.3.1. .NET Binding for the C++ Messaging API Class: Address
5.3.2. .NET Binding for the C++ Messaging API Class: Connection
5.3.3. .NET Binding for the C++ Messaging API Class: Duration
5.3.4. .NET Binding for the C++ Messaging API Class: FailoverUpdates
5.3.5. .NET Binding for the C++ Messaging API Class: Message
5.3.6. .NET Binding for the C++ Messaging API Class: Receiver
5.3.7. .NET Binding for the C++ Messaging API Class: Sender
5.3.8. .NET Binding for the C++ Messaging API Class: Session
5.3.9. .NET Binding for the C++ Messaging API Class: SessionReceiver

List of Tables

2.1. Address String Options
2.2. Node Properties
2.3. Link Properties
2.4. Connection Options
2.5. Python Datatypes in Maps
2.6. C++ Datatypes in Maps
2.7. Datatype Mapping between C++ and .NET binding
2.8. Mapping to AMQP 0-10 Message Properties
3.1. JNDI Properties supported by Apache Qpid
3.2. Connection URL Properties
3.3. Broker List Options
3.4. Java JMS Mapping to AMQP 0-10 Message Properties
3.5. Java Datatypes in Maps
4.1. WCF Binding Parameters
5.1. .NET Binding for the C++ Messaging Client Component Architecture
5.2. Example : Client - Server
5.3. Example : Map Sender – Map Receiver
5.4. Example : Spout - Drain
5.5. Example : Map Callback Sender – Map Callback Receiver
5.6. Example - Declare Queues
5.7. Example: Direct Sender - Direct Receiver
5.8. Example: Hello World
5.9. .NET Binding for the C++ Messaging API Class: Address
5.10. .NET Binding for the C++ Messaging API Class: Connection
5.11. .NET Binding for the C++ Messaging API Class: Duration
5.12. .NET Binding for the C++ Messaging API Class: FailoverUpdates
5.13. .NET Binding for the C++ Messaging API Class: Message
5.14. .NET Binding for the C++ Messaging API Class: Receiver
5.15. .NET Binding for the C++ Messaging API Class: Sender
5.16. .NET Binding for the C++ Messaging API Class: Session

List of Examples

2.1. "Hello world!" in C++
2.2. "Hello world!" in Python
2.3. "Hello world!" in .NET C#
2.4. Queues
2.5. Topics
2.6. Using subjects
2.7. Subjects with multi-word keys
2.8. Assertions on Nodes
2.9. Creating a Queue Automatically
2.10. Browsing a Queue
2.11. Using the XML Exchange
2.12. Receiving Messages from Multiple Sources
2.13. Transactions
2.14. Specifying Connection Options in C++ and Python
2.15. Sending Qpid Maps in Python
2.16. Sending Qpid Maps in C++
2.17. Sending Qpid Maps in .NET C#
2.18. Request / Response Applications in C++
2.19. Tracking cluster membership
3.1. "Hello world!" in Java
3.2. JNDI Properties File for "Hello world!" example
3.3. JNDI Properties File
3.4. Broker Lists
3.5. Sending a Java JMS MapMessage
3.6. log4j Logging Properties
4.1. Traditional service model "Hello world!" example
4.2. Binary "Hello world!" example using the channel model