blob: 50f0c070898bfa2ddc5b329272588f29bda0afbf [file] [log] [blame]
= Qpid C++ Examples =
Apache Qpid Examples in C++ are found inside this directory, they are
based on the 0-10 version of the AMQP specification (see amqp.org for
details). A short description on each example is found below.
Please note that you will have to start the Qpid broker on port 5672,
on your localhost (127.0.0.1) before running these examples. However,
it is possible to alternatively specify the host and port when running
each example.
Ex:- ./declare_queues 127.0.0.1 5673
The qpid C++ broker (known as qpidd) is found
- if installed, installed as /usr/sbin/qpidd
- in /path-to-qpid-source/cpp/src/
== Direct ==
This is an example on how to create Point-to-Point applications using Qpid. This
example contains three main components.
1. declare_queues
This will bind a queue to the amq.direct exchange, so that the messages sent
to the amq.direct exchange, with a given routing key (routing_key) are
delivered to a specific queue (message_queue).
2. direct_producer
Publishes messages to the amq.direct exchange using the given routing key
(routing_key) discussed above.
3. listener
Uses a message listener to listen messages from a specific queue
(message_queue) as discussed above.
In order to run this example,
On Linux:
# ./declare_queues
# ./direct_producer
# ./listener
== Fanout ==
This is an example on how to create Fanout exchange applications using Qpid.
This example has two components unlike the previous. This is because Fanout
exchange not needing a routing key to be specified.
1. fanout_producer
Publishes a message to the amq.fanout exchange, without using a routing key.
2. listener
Uses a message listener to listen messages from the amq.fanout exchange.
Another difference between the above example and this example is that in the
above example there is no requirement for the listener to be activated before
the messages being published. However, in this example, it is required that a
listener be active before the messages being published, if not they will be
lost.
In order to run this example,
On Linux:
# ./listener
# ./fanout_producer
== Publisher/Subscriber ==
Showing The ability to create topic Publishers and Subscribers using Qpid is
the main objective of this example. It is required that you subscribe first,
before publishing any message due to the construction of this example. There
are two main applications in this.
1. topic_publisher
This application is used to publish messages to the amq.topic exchange using
multipart routing keys, usa.weather, europe.weather, usa.news and europe.news.
2. topic_listener
This application is used to subscribe to several private queues, such as usa,
europe, weather and news. In here, each private queue created is bound to the
amq.topic exchange using bindings that match the corresponding parts of the
multipart routing keys.
Ex:- #.news will retrieve news irrespective of destination.
This example also shows the use of the 'control' routing key which is used by
control messages.
In order to run this example,
On Linux:
# ./topic_listener
# ./topic_publisher
== Request/Response ==
This example shows a simple server that will accept string from a client and
convert them to upper case and send them back to the client. This too has two
main application like the previous sample.
1. client
This sends lines of poetry to the server.
2. server
This is a simple service that will convert incoming strings to upper case and
send the result to amq.direct exchange on which the client listens. It uses the
request's reply_to property as the response's routing key.
In order to run this example,
On Linux:
# ./server
# ./client