This page is a collection of FAQ and How to-s for Qpid. If you have a question, post it to the users list and we will place the answer here to build out our FAQ/ How to.
FAQ
About AMQP
What is AMQP?
AMQP is a wire-level protocol and model for high performance enterprise messaging.
AMQP is an Open Standard for Messaging Middleware.
By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organizations in a timely manner.
AMQP enables complete interoperability for messaging middleware; both the networking protocol and the semantics of broker services are defined in AMQP.
Where did AMQP come from
AMQP was born out from Frustration by John O'Hara at JPMC. He started a project internally to create commodity messaging that was easy to use. Carl Trieloff from Red Hat had started a project to build messaging for both users and for use in infrastructure, while looking around spoke to John about his work. Out of these discussion was born the AMQP working Group with 6 initial members, under an agreement that it will be eternally be licensed for everyone to use.
Since then the Working Group has had many join, and has been making solid progress working on revisions of the specification. For more details see.
Why use AMQP?
AMQP is has been designed to be able to handle the hardest workloads, scale to the largest systems, but also deal with reduction of change and maintenance costs by doing a refresh on many aged practices. The specification is also not language specific allowing the freedom from language and platform lock in, without compromise on user experience, security, scalability and consistently excellent performance.
Qpid & AMQP
Is Qpid Compliant?
Yes, Apache Qpid implements the latest AMQP specifications, providing transaction management, queuing, distribution, security, management, clustering, federation and heterogeneous multi-platform support and a lot more. And Apache Qpid is extremely fast. Apache Qpid aims to be 100% AMQP Compliant.
What Client support does Qpid have?
Apache Qpid provides AMQP Client APIs for the following languages:
- C++
- C# .NET, using WCF
- Ruby
- Python
- Java JMS, fully conformant with Java CTS1.1
If you need another client, join the lists and ask or feel free to contribute one.
Does Qpid Perform (Latency/Throughput)?
Yes, The Qpid C++ broker has been achieved great benchmark results in published papers by those that redistribute it. Red Hat MRG product build on Qpid has shown 760,000msg/sec ingress on an 8 way box or 6,000,000msg/sec OPRA messages.
Latencies have been recored as low as 180-250us (.18ms-.3ms) for TCP round trip and 60-80us for RDMA round trip using the C++ broker.
How To
How to use RDMA with Qpid
The RDMA plugin uses native OFED1.3 and puts AMQP directly onto the DMA. When using the RDMA plug-in for Qpid note the following
- IP over IB or Fibre needs to be setup for the initial negociation
- You need to make sure you have enough memory to pin for DMA use ulimit -l something large
- you might need to edit /etc/security/limits.conf first then log in again
Once you have it up and running, use latencytest to make sure it is working. You should see latencies between 50 and 80us round trip.
Message TTL, auto expire
I need to be able to set time for a message that I send to be removed from the queue if it is not read by my subscriber. For example: I enqueue a message and I want it to be automatically dequeued after a certain amount of time has passed.Is there a feature like this in qpid?
yes, the TTL can be set in the message headers and the messages get dequeued if TTL expires
E.g. from c++:
Message m("Hello World!"); m.getDeliveryProperties().setTtl(500);
Sets a 500 millisecond timeout.