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

Reply via email to