= 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