[CONF] Apache Qpid: Index (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
Index



 
Index
has been edited by Jonathan Robie
(Jan 16, 2009).
 

 
 (View changes)
 

Content:
Apache Qpid: Open Source AMQP Messaging

Enterprise Messaging systems let programs communicate by exchanging messages, much as people communicate by exchanging email. Unlike email, enterprise messaging systems provide guaranteed delivery, speed, security, and freedom from spam. Until recently, there was no open standard for Enterprise Messaging systems, so programmers either wrote their own, or used expensive proprietary systems.

AMQP Advanced Message Queuing Protocol is the first open standard for Enterprise Messaging. It is designed to support messaging for just about any distributed or business application. Routing can be configured flexibly, easily supporting common messaging paradigms like point-to-point, fanout, publish-subscribe, and request-response.

Apache Qpid implements the latest AMQP specification, 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.

AMQP Messaging Servers

Qpid provides two AMQP messaging servers:


	C++ - high performance, low latency, and RDMA support.
	Java - runs on any Java platform



AMQP Client APIs: C++, Java, JMS, Ruby, Python, and C# 

Qpid provides AMQP Client APIs for the following languages:


	C++
	C# .NET, using WCF
	Ruby
	Python
	Java JMS, fully conformant with Java CTS1.1





Operating Systems and Platforms: 

The Qpid C++ broker runs on the following operating systems:


	Linux systems
	Windows
	Solaris (coming soon)



The Qpid Java broker runs on:


	Any Java platform



Qpid clients can be run on the following operating systems and platforms:


	Linux
	Windows
	.NET
	Any Java platform
	Solaris (coming soon)



Getting Started


	Download Qpid here: download page
	Follow these instructions to get started fast: Getting Started
	If you need help, mail the lists



Getting Help

If you have a question about any aspect of Qpid or need help getting up and running please send an email to one of our mailing lists.

Getting Involved

We welcome contributions to Qpid. Mail us on one of our lists if you want to contribute to the project, have questions on using it or just want to get our thoughts on a topic...

Roadmap

For details on releases, a summary of what is in each release can be found here RoadMap











Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request

Unsubscribe or edit your notifications preferences








svn commit: r735059 - in /qpid/trunk/qpid/cpp/src: qpid/cluster/Cluster.cpp qpid/cluster/Event.cpp qpid/cluster/Event.h tests/cluster_test.cpp

2009-01-16 Thread aconway
Author: aconway
Date: Fri Jan 16 09:25:18 2009
New Revision: 735059

URL: http://svn.apache.org/viewvc?rev=735059view=rev
Log:
Separate cluster::EventHeader to allow non-copy events.

Modified:
qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h
qpid/trunk/qpid/cpp/src/tests/cluster_test.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=735059r1=735058r2=735059view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Fri Jan 16 09:25:18 2009
@@ -187,7 +187,7 @@
 Mutex::ScopedLock l(lock);
 MemberId from(nodeid, pid);
 framing::Buffer buf(static_castchar*(msg), msg_len);
-Event e(Event::decode(from, buf));
+Event e(Event::decodeCopy(from, buf));
 if (from == myId) // Record self-deliveries for flow control.
 mcast.selfDeliver(e);
 deliver(e, l);

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp?rev=735059r1=735058r2=735059view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp Fri Jan 16 09:25:18 2009
@@ -32,28 +32,37 @@
 
 using framing::Buffer;
 
-const size_t Event::HEADER_SIZE =
+const size_t EventHeader::HEADER_SIZE =
 sizeof(uint8_t) +  // type
 sizeof(uint64_t) + // connection pointer only, CPG provides member ID.
 sizeof(uint32_t);  // payload size
 
+EventHeader::EventHeader(EventType t, const ConnectionId c,  size_t s)
+: type(t), connectionId(c), size(s) {}
+
 Event::Event(EventType t, const ConnectionId c,  size_t s)
-: type(t), connectionId(c), size(s), 
store(RefCountedBuffer::create(s+HEADER_SIZE)) {
+: EventHeader(t,c,s), store(RefCountedBuffer::create(s+HEADER_SIZE))
+{
 encodeHeader();
 }
 
-Event Event::decode(const MemberId m, framing::Buffer buf) {
+void EventHeader::decode(const MemberId m, framing::Buffer buf) {
 if (buf.available() = HEADER_SIZE)
 throw ClusterLeaveException(Not enough for multicast header);
-EventType type((EventType)buf.getOctet());
+type = (EventType)buf.getOctet();
 if(type != DATA  type != CONTROL)
 throw ClusterLeaveException(Invalid multicast event type);
-ConnectionId connection(m, 
reinterpret_castConnection*(buf.getLongLong()));
-uint32_t size = buf.getLong();
-Event e(type, connection, size);
-if (buf.available()  size)
+connectionId = ConnectionId(m, 
reinterpret_castConnection*(buf.getLongLong()));
+size = buf.getLong();
+}
+
+Event Event::decodeCopy(const MemberId m, framing::Buffer buf) {
+EventHeader h;
+h.decode(m, buf);   // Header
+Event e(h.getType(), h.getConnectionId(), h.getSize());
+if (buf.available()  e.size)
 throw ClusterLeaveException(Not enough data for multicast event);
-memcpy(e.getData(), buf.getPointer() + buf.getPosition(), size);
+memcpy(e.getData(), buf.getPointer() + buf.getPosition(), e.size);
 return e;
 }
 
@@ -65,11 +74,16 @@
 return e;
 }
 
-void Event::encodeHeader () {
-Buffer b(getStore(), HEADER_SIZE);
+void EventHeader::encode(Buffer b) const {
 b.putOctet(type);
 b.putLongLong(reinterpret_castuint64_t(connectionId.getPointer()));
 b.putLong(size);
+}
+
+// Encode my header in my buffer.
+void Event::encodeHeader () {
+Buffer b(getStore(), HEADER_SIZE);
+encode(b);
 assert(b.getPosition() == HEADER_SIZE);
 }
 

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h?rev=735059r1=735058r2=735059view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h Fri Jan 16 09:25:18 2009
@@ -36,26 +36,44 @@
 // byte-stream data.
 // 
 
+/** Header data for a multicast event */
+class EventHeader {
+  public:
+EventHeader(EventType t=DATA, const ConnectionId c=ConnectionId(), size_t 
size=0);
+void decode(const MemberId m, framing::Buffer);
+void encode(framing::Buffer) const;
+
+EventType getType() const { return type; }
+ConnectionId getConnectionId() const { return connectionId; }
+MemberId getMemberId() const { return connectionId.getMember(); }
+size_t getSize() const { return size; }
+
+bool isCluster() const { return connectionId.getPointer() == 0; }
+bool isConnection() const { return connectionId.getPointer() != 0; }
+
+  protected:
+static const size_t HEADER_SIZE;
+
+EventType type;
+ 

[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid Compliant?
  What Client support does Qpid have?
  Does Qpid Perform.


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire





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.

From the AMQP website:

 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.

Text mostly taken from

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.

Yes, The Qpid C++ broker has been achieved great benchmark results in published papers by those that redistribute it. Red Hat MRG|www.redhat.com/mrg|www.redhat.com/mrg product build on Qpid has show ove 760,000msg/sec ingress on an 8 way box or 6,000,000 OPRA16 messages.

Latencies have been recored at 180-250us for TCP round trip and 60-80us for RDMA round trip.

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.











Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request

Unsubscribe or edit your notifications preferences








[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid Compliant?
  What Client support does Qpid have?
  Does Qpid Perform.


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire





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.

From the AMQP website:

 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.

Text mostly taken from

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.

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.











Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request

Unsubscribe or edit your notifications preferences








[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid Compliant?
  What Client support does Qpid have?
  Does Qpid Perform (Latency/Throughput)?


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire





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.

From the AMQP website:

 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.

Text mostly taken from

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.











Powered by
Atlassian Confluence
(Version: 2.2.9 Build:#527 Sep 07, 2006)
-
Bug/feature request

Unsubscribe or edit your notifications preferences








[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid Compliant?
  What Client support does Qpid have?
  Does Qpid Perform (Latency/Throughput)?


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire
  How to install the qpid-tools for c++ booker?





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.

From the AMQP website:

 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.

Text mostly taken from

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.

How to install the qpid-tools for c++ booker?

I see

[commands]$ ./qpid-queue-stats
 Traceback (most recent call last):
 File "./qpid-queue-stats", line 29, in
 from qmf.console import Session, Console
 ImportError: No module named qmf.console


This problem occurs because the PYTHONPATH environment variable does not include the location of the qpid python files.  If you are running from the SVN checkout, add path/qpid/python to PYTHONPATH (where 

svn commit: r735115 - in /qpid/trunk/qpid/cpp: examples/qmf-console/Makefile.am examples/qmf-console/printevents.cpp examples/qmf-console/queuestats.cpp src/qpid/console/SessionManager.cpp src/tests/M

2009-01-16 Thread tross
Author: tross
Date: Fri Jan 16 12:09:39 2009
New Revision: 735115

URL: http://svn.apache.org/viewvc?rev=735115view=rev
Log:
QPID-1588 - Fixed bug in asynchronous API operations.
Added a new example to demonstrate async ops.

Added:
qpid/trunk/qpid/cpp/examples/qmf-console/queuestats.cpp
Modified:
qpid/trunk/qpid/cpp/examples/qmf-console/Makefile.am
qpid/trunk/qpid/cpp/examples/qmf-console/printevents.cpp
qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp
qpid/trunk/qpid/cpp/src/tests/ManagementTest.cpp

Modified: qpid/trunk/qpid/cpp/examples/qmf-console/Makefile.am
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/qmf-console/Makefile.am?rev=735115r1=735114r2=735115view=diff
==
--- qpid/trunk/qpid/cpp/examples/qmf-console/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/examples/qmf-console/Makefile.am Fri Jan 16 12:09:39 
2009
@@ -22,7 +22,7 @@
 MAKELDFLAG = qmfconsole
 include $(top_srcdir)/examples/makedist.mk
 
-noinst_PROGRAMS=console printevents ping
+noinst_PROGRAMS=console printevents ping queuestats
 
 console_SOURCES=console.cpp
 console_LDADD=$(CONSOLE_LIB)
@@ -33,9 +33,13 @@
 ping_SOURCES=ping.cpp
 ping_LDADD=$(CONSOLE_LIB)
 
+queuestats_SOURCES=queuestats.cpp
+queuestats_LDADD=$(CONSOLE_LIB)
+
 examples_DATA= \
console.cpp \
printevents.cpp \
ping.cpp \
+   queuestats.cpp \
$(MAKEDIST)
 

Modified: qpid/trunk/qpid/cpp/examples/qmf-console/printevents.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/qmf-console/printevents.cpp?rev=735115r1=735114r2=735115view=diff
==
--- qpid/trunk/qpid/cpp/examples/qmf-console/printevents.cpp (original)
+++ qpid/trunk/qpid/cpp/examples/qmf-console/printevents.cpp Fri Jan 16 
12:09:39 2009
@@ -37,7 +37,7 @@
 }
 
 void brokerDisconnected(const Broker broker) {
-cout  qpid::sys::now()   NOTIC qpid-printevents:brokerDisonnected 
broker= 
+cout  qpid::sys::now()   NOTIC 
qpid-printevents:brokerDisconnected broker= 
 broker.getUrl()  endl;
 }
 

Added: qpid/trunk/qpid/cpp/examples/qmf-console/queuestats.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/examples/qmf-console/queuestats.cpp?rev=735115view=auto
==
--- qpid/trunk/qpid/cpp/examples/qmf-console/queuestats.cpp (added)
+++ qpid/trunk/qpid/cpp/examples/qmf-console/queuestats.cpp Fri Jan 16 12:09:39 
2009
@@ -0,0 +1,141 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include qpid/console/ConsoleListener.h
+#include qpid/console/SessionManager.h
+
+using namespace std;
+using namespace qpid::console;
+
+//
+// Declare a subclass of ConsoleListener to receive asynchronous data.
+//
+class Listener : public ConsoleListener {
+
+//
+// Declare a map from ObjectId to string to store queue names by their 
object IDs.
+//
+typedef mapObjectId, string QueueMap;
+QueueMap queueMap;
+public:
+~Listener() {}
+
+//
+// Receive property updates from the agent.
+//
+void objectProps(Broker /*broker*/, Object object) {
+string name = object.attrString(name);
+ObjectId oid = object.getObjectId();
+QueueMap::iterator iter = queueMap.find(oid);
+
+if (iter == queueMap.end()) {
+//
+// Object is not in the map.  Learn it.
+//
+cout  New Queue:   name  endl;
+queueMap[oid] = name;
+}
+}
+
+//
+// Receive statistic updates from the agent.
+//
+void objectStats(Broker /*broker*/, Object object) {
+ObjectId oid = object.getObjectId();
+QueueMap::iterator iter = queueMap.find(oid);
+if (iter == queueMap.end())
+//
+// Object id is not in the map.  We are not interested in this 
update.
+//
+return;
+
+cout  Stats for:   iter-second  endl;
+cout  msgTotalEnqueues =   
object.attrUint64(msgTotalEnqueues)  endl;
+cout  

svn commit: r735126 - /qpid/trunk/qpid/ruby/lib/qpid/qmf.rb

2009-01-16 Thread tross
Author: tross
Date: Fri Jan 16 12:57:47 2009
New Revision: 735126

URL: http://svn.apache.org/viewvc?rev=735126view=rev
Log:
QPID-1542 - Applied Ian's patch

Modified:
qpid/trunk/qpid/ruby/lib/qpid/qmf.rb

Modified: qpid/trunk/qpid/ruby/lib/qpid/qmf.rb
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/ruby/lib/qpid/qmf.rb?rev=735126r1=735125r2=735126view=diff
==
--- qpid/trunk/qpid/ruby/lib/qpid/qmf.rb (original)
+++ qpid/trunk/qpid/ruby/lib/qpid/qmf.rb Fri Jan 16 12:57:47 2009
@@ -962,8 +962,17 @@
   unless object_id == newer.object_id
 raise Objects with different object-ids
   end
-  @properties = newer.getProperties unless newer.properties.empty?
-  @statistics = newer.getStatistics unless newer.statistics.empty?
+  @properties = newer.properties unless newer.properties.empty?
+  @statistics = newer.statistics unless newer.statistics.empty?
+end
+
+def update
+  obj = @session.object(:object_id = @object_id, :broker = @broker)
+  if obj
+merge_update(obj)
+  else
+raise Underlying object no longer exists.
+  end
 end
 
 def to_s




svn commit: r735127 - /qpid/trunk/qpid/ruby/lib/qpid/qmf.rb

2009-01-16 Thread tross
Author: tross
Date: Fri Jan 16 13:00:25 2009
New Revision: 735127

URL: http://svn.apache.org/viewvc?rev=735127view=rev
Log:
QPID-1541 - Applied Ian's patch

Modified:
qpid/trunk/qpid/ruby/lib/qpid/qmf.rb

Modified: qpid/trunk/qpid/ruby/lib/qpid/qmf.rb
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/ruby/lib/qpid/qmf.rb?rev=735127r1=735126r2=735127view=diff
==
--- qpid/trunk/qpid/ruby/lib/qpid/qmf.rb (original)
+++ qpid/trunk/qpid/ruby/lib/qpid/qmf.rb Fri Jan 16 13:00:25 2009
@@ -390,6 +390,18 @@
   @result
 end
 
+# Return one and only one object or nil.
+def object(kwargs)
+  objs = objects(kwargs)
+  return objs.length == 1 ? objs[0] : nil
+end
+
+# Return the first of potentially many objects.
+def first_object(kwargs)
+  objs = objects(kwargs)
+  return objs.length  0 ? objs[0] : nil
+end
+
 def set_event_filter(kwargs); end
 
 def handle_broker_connect(broker); end




svn commit: r735150 - in /qpid/trunk/qpid/cpp/src/qpid/cluster: PollerDispatch.cpp PollerDispatch.h ThreadDispatch.cpp ThreadDispatch.h

2009-01-16 Thread aconway
Author: aconway
Date: Fri Jan 16 13:34:01 2009
New Revision: 735150

URL: http://svn.apache.org/viewvc?rev=735150view=rev
Log:
cluster refactor: separate out dispatch strategy, implement poller and thread 
dispatch.

Added:
qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp   (with props)
qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.h   (with props)
qpid/trunk/qpid/cpp/src/qpid/cluster/ThreadDispatch.cpp   (with props)
qpid/trunk/qpid/cpp/src/qpid/cluster/ThreadDispatch.h   (with props)

Added: qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp?rev=735150view=auto
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp (added)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp Fri Jan 16 13:34:01 
2009
@@ -0,0 +1,60 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+#include PollerDispatch.h
+
+#include qpid/log/Statement.h
+#include boost/bind.hpp
+
+namespace qpid {
+namespace cluster {
+
+PollerDispatch::PollerDispatch(Cpg c, boost::shared_ptrsys::Poller p,
+   boost::functionvoid() e)
+: cpg(c), poller(p), onError(e),
+  dispatchHandle(cpg,
+ boost::bind(PollerDispatch::dispatch, this, _1), // read
+ 0, // write
+ boost::bind(PollerDispatch::disconnect, this, _1) // 
disconnect
+  )
+{}
+
+void PollerDispatch::start() {
+dispatchHandle.startWatch(poller);
+}
+
+// Entry point: called by IO to dispatch CPG events.
+void PollerDispatch::dispatch(sys::DispatchHandle h) {
+try {
+cpg.dispatchAll();
+h.rewatch();
+} catch (const std::exception e) {
+QPID_LOG(critical, Error in cluster dispatch:   e.what());
+onError();
+}
+}
+
+// Entry point: called if disconnected from  CPG.
+void PollerDispatch::disconnect(sys::DispatchHandle ) {
+QPID_LOG(critical, Disconnected from cluster);
+onError();
+}
+
+}} // namespace qpid::cluster

Propchange: qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp
--
svn:eol-style = native

Propchange: qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.cpp
--
svn:keywords = Rev Date

Added: qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.h?rev=735150view=auto
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.h (added)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/PollerDispatch.h Fri Jan 16 13:34:01 
2009
@@ -0,0 +1,56 @@
+#ifndef QPID_CLUSTER_POLLERDISPATCH_H
+#define QPID_CLUSTER_POLLERDISPATCH_H
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include Cpg.h
+#include qpid/sys/Poller.h
+#include qpid/sys/DispatchHandle.h
+#include boost/function.hpp
+
+namespace qpid {
+namespace cluster {
+
+/**
+ * Dispatch CPG events via the poller.
+ */
+class PollerDispatch  {
+  public:
+PollerDispatch(Cpg, boost::shared_ptrsys::Poller poller,
+   boost::functionvoid() onError) ;
+void start();
+
+  private:
+

svn commit: r735151 - in /qpid/trunk/qpid/cpp/src: cluster.mk qpid/cluster/Cluster.cpp qpid/cluster/Cluster.h qpid/cluster/Event.cpp qpid/cluster/Event.h

2009-01-16 Thread aconway
Author: aconway
Date: Fri Jan 16 13:34:46 2009
New Revision: 735151

URL: http://svn.apache.org/viewvc?rev=735151view=rev
Log:
cluster refactor: separate out dispatch strategy, implement poller and thread 
dispatch.

Modified:
qpid/trunk/qpid/cpp/src/cluster.mk
qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.h
qpid/trunk/qpid/cpp/src/qpid/cluster/Event.cpp
qpid/trunk/qpid/cpp/src/qpid/cluster/Event.h

Modified: qpid/trunk/qpid/cpp/src/cluster.mk
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/cluster.mk?rev=735151r1=735150r2=735151view=diff
==
--- qpid/trunk/qpid/cpp/src/cluster.mk (original)
+++ qpid/trunk/qpid/cpp/src/cluster.mk Fri Jan 16 13:34:46 2009
@@ -38,36 +38,40 @@
 
 cluster_la_SOURCES = \
   $(CMAN_SOURCES) \
-  qpid/cluster/types.h \
   qpid/cluster/Cluster.cpp \
   qpid/cluster/Cluster.h \
-  qpid/cluster/Cpg.cpp \
-  qpid/cluster/Cpg.h \
-  qpid/cluster/Dispatchable.h \
+  qpid/cluster/ClusterLeaveException.h \
+  qpid/cluster/ClusterMap.cpp  \
+  qpid/cluster/ClusterMap.h\
   qpid/cluster/ClusterPlugin.cpp \
-  qpid/cluster/ConnectionCodec.h \
-  qpid/cluster/ConnectionCodec.cpp \
-  qpid/cluster/Connection.h \
   qpid/cluster/Connection.cpp \
+  qpid/cluster/Connection.h\
+  qpid/cluster/ConnectionCodec.cpp \
+  qpid/cluster/ConnectionCodec.h   \
   qpid/cluster/ConnectionMap.h \
-  qpid/cluster/NoOpConnectionOutputHandler.h \
-  qpid/cluster/WriteEstimate.h \
-  qpid/cluster/WriteEstimate.cpp \
-  qpid/cluster/OutputInterceptor.h \
-  qpid/cluster/OutputInterceptor.cpp \
-  qpid/cluster/ProxyInputHandler.h \
-  qpid/cluster/Event.h \
-  qpid/cluster/Event.cpp \
-  qpid/cluster/DumpClient.h \
+  qpid/cluster/Cpg.cpp \
+  qpid/cluster/Cpg.h   \
+  qpid/cluster/Dispatchable.h  \
   qpid/cluster/DumpClient.cpp \
-  qpid/cluster/ClusterMap.h \
-  qpid/cluster/ClusterMap.cpp \
-  qpid/cluster/FailoverExchange.h \
+  qpid/cluster/DumpClient.h\
+  qpid/cluster/Event.cpp   \
+  qpid/cluster/Event.h \
   qpid/cluster/FailoverExchange.cpp \
-  qpid/cluster/Multicaster.h \
+  qpid/cluster/FailoverExchange.h  \
   qpid/cluster/Multicaster.cpp \
-  qpid/cluster/ClusterLeaveException.h \
-  qpid/cluster/Quorum.h
+  qpid/cluster/Multicaster.h   \
+  qpid/cluster/NoOpConnectionOutputHandler.h   \
+  qpid/cluster/OutputInterceptor.cpp   \
+  qpid/cluster/OutputInterceptor.h \
+  qpid/cluster/PollerDispatch.cpp  \
+  qpid/cluster/PollerDispatch.h\
+  qpid/cluster/ThreadDispatch.cpp  \
+  qpid/cluster/ThreadDispatch.h\
+  qpid/cluster/ProxyInputHandler.h \
+  qpid/cluster/Quorum.h\
+  qpid/cluster/WriteEstimate.cpp   \
+  qpid/cluster/WriteEstimate.h \
+  qpid/cluster/types.h 
 
 cluster_la_LIBADD=  -lcpg $(libcman) libqpidbroker.la libqpidclient.la
 cluster_la_LDFLAGS = $(PLUGINLDFLAGS)

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp?rev=735151r1=735150r2=735151view=diff
==
--- qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp Fri Jan 16 13:34:46 2009
@@ -85,6 +85,7 @@
 
 Cluster::Cluster(const std::string name_, const Url url_, broker::Broker b, 
bool quorum_, size_t readMax_, size_t writeEstimate_, size_t mcastMax) :
 broker(b),
+mgmtObject(0),
 poller(b.getPoller()),
 cpg(*this),
 name(name_),
@@ -92,14 +93,8 @@
 myId(cpg.self()),
 readMax(readMax_),
 writeEstimate(writeEstimate_),
-cpgDispatchHandle(
-cpg,
-boost::bind(Cluster::dispatch, this, _1), // read
-0, // write
-boost::bind(Cluster::disconnect, this, _1) // disconnect
-),
 mcast(cpg, mcastMax, poller, boost::bind(Cluster::leave, this)),
-mgmtObject(0),
+dispatcher(cpg, poller, boost::bind(Cluster::leave, this)),
 deliverQueue(boost::bind(Cluster::delivered, this, _1), poller),
 state(INIT),
 lastSize(0),
@@ -114,7 +109,7 @@
 }
 broker.getKnownBrokers = boost::bind(Cluster::getUrls, this);
 failoverExchange.reset(new FailoverExchange(this));
-cpgDispatchHandle.startWatch(poller);
+dispatcher.start();
 deliverQueue.start();
 QPID_LOG(notice, *this   joining cluster   name   with url=  
myUrl);
 if (quorum_) quorum.init();
@@ -153,14 +148,13 @@
 state = LEFT;
 QPID_LOG(notice, *this   

[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid AMQP Compliant?
  What Client support does Qpid have?

  What messaging topologies are supported by AMQP and Qpid?
  Performance

  Does Qpid Perform (Latency/Throughput)?


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire
  How to install the qpid-tools for c++ booker?





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.

From the AMQP website:

 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.

Text mostly taken from

Qpid  AMQP


Is Qpid AMQP 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.

What messaging topologies are supported by AMQP and Qpid?

AMQP provides the ability to do Point-to-Point, Peer-to-Peer, Pub-Sub, and Eventing. This allows many patterns to be craeted:

Point-to-point

This is one of the simplest use-cases. AMQP allows for this in a few ways. 
 a.) A client can create a named queue allowing the producer to publish the message to the direct exchange with the key mapping the queue name. This will route the message to that queue.
 b.) The above pattern can be extended by specifying a reply-to address in the published messages allowing for the consumer to reply the producer without knowing who it was send from prior to receiving the message.

One-to-many

There are a few patterns that can be used.

 a.) AMQP provides a 'fanout' exchange which will send a message to all the queues that have been bound to it. Different domains or topics are created with the 'fanout' exchange by declaring different named fan-out exchanges.

b.) A 'topic' or 'headers' exchange can also be used. in this case the pattern match is used to send the message to all the bound queues. It can be thought of as a filter allowing you to create just about any One-to-many routing patterns.

Pub-Sub

Topic can be created with the 'topic' or other 'direct' exchange to allow consumer to bind to into the steams of data they care about. This pattern combined with the use of reply-to and Alternate-routing is the staple of what most people use messaging for today.

FAST Reliable Messaging

AMQP 0-10 allows for fully reliable transfers between any two peers. This means that you can publish or subscribe to the broker fully reliable without requiring the need for transactions. This can all be done in async mode with the C++ broker allowing for high throughput while running entirely reliable.

Transactional


[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid AMQP Compliant?
  What Client support does Qpid have?

  What messaging topologies are supported by AMQP and Qpid?
  Security

  What encryption does Qpid support?
  What authentication does Qpid support?
  What authorization does Qpid support?

  Performance

  Does Qpid Perform (Latency/Throughput)?


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire
  How to install the qpid-tools for c++ booker?





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.

From the AMQP website:

 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.

Text mostly taken from

Qpid  AMQP


Is Qpid AMQP 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.

What messaging topologies are supported by AMQP and Qpid?

AMQP provides the ability to do Point-to-Point, Peer-to-Peer, Pub-Sub, and Eventing. This allows many patterns to be craeted:

Point-to-point

This is one of the simplest use-cases. AMQP allows for this in a few ways. 
 a.) A client can create a named queue allowing the producer to publish the message to the direct exchange with the key mapping the queue name. This will route the message to that queue.
 b.) The above pattern can be extended by specifying a reply-to address in the published messages allowing for the consumer to reply the producer without knowing who it was send from prior to receiving the message.

One-to-many

There are a few patterns that can be used.

 a.) AMQP provides a 'fanout' exchange which will send a message to all the queues that have been bound to it. Different domains or topics are created with the 'fanout' exchange by declaring different named fan-out exchanges.

b.) A 'topic' or 'headers' exchange can also be used. in this case the pattern match is used to send the message to all the bound queues. It can be thought of as a filter allowing you to create just about any One-to-many routing patterns.

Pub-Sub

Topic can be created with the 'topic' or other 'direct' exchange to allow consumer to bind to into the steams of data they care about. This pattern combined with the use of reply-to and Alternate-routing is the staple of what most people use messaging for today.

FAST Reliable Messaging

AMQP 0-10 allows for fully reliable transfers between any two peers. This means that you can publish or subscribe to the broker fully reliable without requiring the need for transactions. This 

[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid AMQP Compliant?
  What Client support does Qpid have?
  What messaging topologies are supported by AMQP and Qpid?
  What AMQP and other exchanges does Qpid support?

  Security

  What encryption does Qpid support?
  What authentication does Qpid support?
  What authorization does Qpid support?

  Performance

  Does Qpid Perform (Latency/Throughput)?
  How do I measure throughput?
  How do I measure latency?
  How do I measure performance with Java clients?
  Can I run my Java client with JAVA-RT?


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire
  How to install the qpid-tools for c++ booker?





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.

From the AMQP website:

 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.

Text mostly taken from

Qpid  AMQP


Is Qpid AMQP 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.

What messaging topologies are supported by AMQP and Qpid?

AMQP provides the ability to do Point-to-Point, Peer-to-Peer, Pub-Sub, and Eventing. This allows many patterns to be craeted:

Point-to-point

This is one of the simplest use-cases. AMQP allows for this in a few ways. 
 a.) A client can create a named queue allowing the producer to publish the message to the direct exchange with the key mapping the queue name. This will route the message to that queue.
 b.) The above pattern can be extended by specifying a reply-to address in the published messages allowing for the consumer to reply the producer without knowing who it was send from prior to receiving the message.

One-to-many

There are a few patterns that can be used.

 a.) AMQP provides a 'fanout' exchange which will send a message to all the queues that have been bound to it. Different domains or topics are created with the 'fanout' exchange by declaring different named fan-out exchanges.

b.) A 'topic' or 'headers' exchange can also be used. in this case the pattern match is used to send the message to all the bound queues. It can be thought of as a filter allowing you to create just about any One-to-many routing patterns.

Pub-Sub

Topic can be created with the 'topic' or other 'direct' exchange to allow consumer to bind to into the steams of data they care about. This pattern combined with the use of reply-to and Alternate-routing is the staple of what most people use messaging for today.

FAST Reliable 

[CONF] Apache Qpid: FAQ (page edited)

2009-01-16 Thread confluence










Page Edited :
qpid :
FAQ



 
FAQ
has been edited by Carl Trieloff
(Jan 16, 2009).
 

 
 (View changes)
 

Content:


  FAQ

  About AMQP

  What is AMQP?
  Where did AMQP come from
  Why use AMQP?

  Qpid  AMQP

  Is Qpid AMQP Compliant?
  What Client support does Qpid have?
  What messaging topologies are supported by AMQP and Qpid?
  What AMQP and other exchanges does Qpid support?

  Security

  What encryption does Qpid support?
  What authentication does Qpid support?
  What authorization does Qpid support?

  Performance

  Does Qpid Perform (Latency/Throughput)?
  How do I measure throughput?
  How do I measure latency?
  How do I measure performance with Java clients?
  Can I run my Java client with JAVA-RT?

  Management

  What Management does Qpid support
  How do I manage a broker?
  What logging tracing and events does Qpid support?
  Can I get to all the management data from a client?
  What is QMF
  What are QMF Agents, and what do they do for me?
  What is QMFC and what does it do for mr?
  What is QMan

  Clustering, Federation and Disaster Recovery

  Does Qpid provide Fault Tolerance for the cluster?
  What does the cluster guarantee?
  Do clients get notified members joining or leaving the cluster?
  Can I specify more than one host to connect initially to the cluster to avoid single point of failure?
  How does Clustering work?
  What is Federation? 
  Disater recover features are in process, QA will be added once they are complete.


  How To

  

  How to use RDMA with Qpid
  Message TTL, auto expire
  How to install the qpid-tools for c++ booker?





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.

From the AMQP website:

 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.

Text mostly taken from

Qpid  AMQP


Is Qpid AMQP 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.

What messaging topologies are supported by AMQP and Qpid?

AMQP provides the ability to do Point-to-Point, Peer-to-Peer, Pub-Sub, and Eventing. This allows many patterns to be craeted:

Point-to-point

This is one of the simplest use-cases. AMQP allows for this in a few ways. 
 a.) A client can create a named queue allowing the producer to publish the message to the direct exchange with the key mapping the queue name. This will route the message to that queue.
 b.) The above pattern can be extended by specifying a reply-to address in the published messages allowing for the consumer to reply the producer without knowing who it was send from prior to receiving the message.

One-to-many

There are a few patterns that can be used.

 a.)