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 and Lists in Message Content
2.11.1. Qpid Maps and Lists in Python
2.11.2. Qpid Maps and Lists in C++
2.11.3. Qpid Maps and Lists 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
2.16.1. 0-10 Message Property Keys
2.17. Using Message Groups
2.17.1. Creating Message Group Queues
2.17.2. Sending Grouped Messages
2.17.3. Receiving Grouped Messages
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
3.6. Configuring the JMS Client
3.6.1. Qpid JVM Arguments
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 Class: SessionReceiver

List of Tables

2.1. Address String Options
2.2. Node Properties
2.3. Link Properties
2.4. Connection Options
2.5. Map and List Representation in Supported Languages
2.6. Python Datatypes in Maps
2.7. C++ Datatypes in Maps
2.8. Datatype Mapping between C++ and .NET binding
2.9. 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
3.6. Config Options For Connection Behaviour
3.7. Config Options For Session Behaviour
3.8. Config Options For Consumer Behaviour
3.9. Config Options For Producer Behaviour
3.10. Config Options For Threading
3.11. Config Options For I/O
3.12. Config Options For Security
3.13. Config Options For Security - Standard JVM properties needed when using GSSAPI as the SASL mechanism.
3.14. Config Options For Security - Using SSL for securing connections or using EXTERNAL as the SASL mechanism.
3.15. Config Options For Security - Standard JVM properties needed when Using SSL for securing connections or using EXTERNAL as the SASL mechanism.
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++, Python, and .NET
2.15. Sending Qpid Maps and Lists in Python
2.16. Sending Qpid Maps and Lists in C++
2.17. Sending Qpid Maps and Lists in .NET C#
2.18. Request / Response Applications in C++
2.19. Tracking cluster membership
2.20. Accessing the AMQP 0-10 Message Timestamp in Python
2.21. Accessing the AMQP 0-10 Message Timestamp in C++
2.22. Message Group Queue Creation - Python
2.23. Message Group Queue Creation - C++
2.24. Message Group Queue Creation - Java
2.25. Sending Grouped Messages - Python
2.26. Sending Grouped Messages - C++
2.27. Sending Grouped Messages - Java
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