Mario Grotschar wrote:
I have noticed that in the git trunk of tuscany the message queue Apache
Qpid 0.6 is already integrated as a component.
Yes, the Tuscany C++ runtime provides a Queue component implemented
using Qpid/C 0.6. It's just one of several utility components provided
in tuscany/sca-cpp/trunk/components [1] to help the construction of SCA
composite apps.
Here's the list of components currently available there:
Cache: Key/value memory cache, using Memcached;
Chat: XMPP chat, using Apache Vysper and Libstrophe;
Queue: AMQP queuing, using Apache Qpid/C;
Sqldb: SQL database, using PostgreSQL;
Store: Key/value persistent store, using TinyCDB;
Webservice: Web service gateway, using Apache Axis2/C;
Log: distributed logger, using Facebook Scribe (not working yet).
Most components present a simple ATOMPub REST interface. For example you
can send a message to a queue, a chat connection, or add an entry to a
cache or a database using a simple HTTP POST.
My questions are:
1.) Is it identical to the Qpid 0.6 from the apache qpid project?
Yes, details and build instructions can be found in the INSTALL doc [2].
2.) Is there any limitation to its functionality, when using it as a
component?
Let me describe how that queue component currently works. There's
actually two components.
A) A queue-sender component, responsible for sending messages to Qpid
queues.
You can configure it like this:
<component name="example-sender">
<implementation.cpp path=".libs" library="libqueue-sender"/>
<property name="key">example-amqp-key</property>
<service name="sender">
<t:binding.http uri="example/sender"/>
</service>
</component>
Then, to send an AMQP message with key "example-amqp-key", just send an
HTTP POST with the contents of your message (in XML or JSON) to the
component's URI http://yourhost/example/sender.
B) A queue-listener component, responsible for listening to a Qpid queue
and relaying received messages to an application component wired to it.
Here's an example configuration:
<component name="example-listener">
<implementation.cpp path=".libs" library="libqueue-listener"/>
<property name="key">example-amqp-key</property>
<property name="queue">example-amqp-queue</property>
<reference name="relay" target="my-app-component"/>
</component>
<component name="my-app-component">
...
</component>
Here all messages received on example-amqp-queue will be relayed to
component my-app-component, using an HTTP POST as well.
A complete example is available there [3].
In summary, these two components allow you to flow messages through Qpid
AMQP queues with simple HTTP POSTs. They don't do much -- to try to
answer your question about limitations -- but I've used them for a while
now and they've been working pretty well for me.
Hope this helps.
[1] http://svn.apache.org/repos/asf/tuscany/sca-cpp/trunk/components/
[2] http://svn.apache.org/repos/asf/tuscany/sca-cpp/trunk/INSTALL
[3]
http://svn.apache.org/repos/asf/tuscany/sca-cpp/trunk/components/queue/queue.composite
--
Jean-Sebastien