Return-Path: Delivered-To: apmail-incubator-qpid-commits-archive@locus.apache.org Received: (qmail 65996 invoked from network); 5 Dec 2007 18:54:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 5 Dec 2007 18:54:01 -0000 Received: (qmail 73167 invoked by uid 500); 5 Dec 2007 18:53:49 -0000 Delivered-To: apmail-incubator-qpid-commits-archive@incubator.apache.org Received: (qmail 73153 invoked by uid 500); 5 Dec 2007 18:53:49 -0000 Mailing-List: contact qpid-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: qpid-dev@incubator.apache.org Delivered-To: mailing list qpid-commits@incubator.apache.org Received: (qmail 73144 invoked by uid 99); 5 Dec 2007 18:53:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Dec 2007 10:53:49 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Dec 2007 18:53:36 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 345A71A9832; Wed, 5 Dec 2007 10:53:39 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r601467 - in /incubator/qpid/trunk/qpid/python/examples: direct/ fanout/ pubsub/ Date: Wed, 05 Dec 2007 18:53:37 -0000 To: qpid-commits@incubator.apache.org From: gsim@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071205185339.345A71A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gsim Date: Wed Dec 5 10:53:36 2007 New Revision: 601467 URL: http://svn.apache.org/viewvc?rev=601467&view=rev Log: Reversed renaming Added: incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py (with props) incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py (with props) incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py (with props) incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py (with props) incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py (with props) incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py (with props) incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py (with props) incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py (with props) Removed: incubator/qpid/trunk/qpid/python/examples/direct/direct_config_queues.py incubator/qpid/trunk/qpid/python/examples/direct/direct_publisher.py incubator/qpid/trunk/qpid/python/examples/direct/listener.py incubator/qpid/trunk/qpid/python/examples/fanout/fanout_config_queues.py incubator/qpid/trunk/qpid/python/examples/fanout/fanout_publisher.py incubator/qpid/trunk/qpid/python/examples/fanout/listener.py incubator/qpid/trunk/qpid/python/examples/pubsub/topic_listener.py incubator/qpid/trunk/qpid/python/examples/pubsub/topic_publisher.py Added: incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py (added) +++ incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,53 @@ +#!/usr/bin/env python +""" + config_direct_exchange.py + + Creates and binds a queue on an AMQP direct exchange. + + All messages using the routing key "routing_key" are + sent to the queue named "message_queue". +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Initialization ----------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Create a queue ------------------------------------- + +# Create a queue named "listener" on channel 1, and bind it +# to the "amq.direct" exchange. +# +# queue_declare() creates an AMQP queue, which is held +# on the broker. Published messages are sent to the AMQP queue, +# from which messages are delivered to consumers. +# +# queue_bind() determines which messages are routed to a queue. +# Route all messages with the routing key "routing_key" to +# the AMQP queue named "message_queue". + +session.queue_declare(queue="message_queue") +session.queue_bind(exchange="amq.direct", queue="message_queue", routing_key="routing_key") + +#----- Cleanup --------------------------------------------- + +session.session_close() + Propchange: incubator/qpid/trunk/qpid/python/examples/direct/config_direct_exchange.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,75 @@ +#!/usr/bin/env python +""" + direct_consumer.py + + This AMQP client reads messages from a message + queue named "message_queue". +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + + +#----- Initialization -------------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Read from queue -------------------------------------------- + +# Now let's create a local client queue and tell it to read +# incoming messages. + +# The consumer tag identifies the client-side queue. + +consumer_tag = "consumer1" +queue = client.queue(consumer_tag) + +# Call message_consume() to tell the broker to deliver messages +# from the AMQP queue to this local client queue. The broker will +# start delivering messages as soon as message_consume() is called. + +session.message_subscribe(queue="message_queue", destination=consumer_tag) +session.message_flow(consumer_tag, 0, 0xFFFFFFFF) # Kill these? +session.message_flow(consumer_tag, 1, 0xFFFFFFFF) # Kill these? + +# Initialize 'final' and 'content', variables used to identify the last message. + +final = "That's all, folks!" # In a message body, signals the last message +content = "" # Content of the last message read + +message = None +while content != final: + message = queue.get(timeout=10) + content = message.content.body + print content + +# Messages are not removed from the queue until they are +# acknowledged. Using cumulative=True, all messages from the session +# up to and including the one identified by the delivery tag are +# acknowledged. This is more efficient, because there are fewer +# network round-trips. + +message.complete(cumulative=True) + +#----- Cleanup ------------------------------------------------ + +# Clean up before exiting so there are no open threads. +# + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/direct/direct_consumer.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,51 @@ +#!/usr/bin/env python +""" + direct_producer.py + + Publishes messages to an AMQP direct exchange, using + the routing key "routing_key" +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Initialization ----------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Publish some messages ------------------------------ + +# Create some messages and put them on the broker. + +for i in range(10): + message = Content("message " + str(i)) + message["routing_key"] = "routing_key" + session.message_transfer(destination="amq.direct", content=message) + +final="That's all, folks!" +message = Content(final) +message["routing_key"] = "routing_key" +session.message_transfer(destination="amq.direct", content=message) + +#----- Cleanup -------------------------------------------- + +# Clean up before exiting so there are no open threads. + +session.session_close() + Propchange: incubator/qpid/trunk/qpid/python/examples/direct/direct_producer.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py (added) +++ incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,54 @@ +#!/usr/bin/env python +""" + config_direct_exchange.py + + Creates and binds a queue on an AMQP direct exchange. + + All messages using the routing key "routing_key" are + sent to the queue named "message_queue". +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Initialization ----------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Create a queue ------------------------------------- + +# Create a queue named "listener" on channel 1, and bind it +# to the "amq.fanout" exchange. +# +# queue_declare() creates an AMQP queue, which is held +# on the broker. Published messages are sent to the AMQP queue, +# from which messages are delivered to consumers. +# +# queue_bind() determines which messages are routed to a queue. +# Route all messages with the routing key "routing_key" to +# the AMQP queue named "message_queue". + +session.queue_declare(queue="message_queue") +session.queue_bind(exchange="amq.fanout", queue="message_queue") + +#----- Cleanup --------------------------------------------- + +# Clean up before exiting so there are no open threads. + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/fanout/config_fanout_exchange.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,75 @@ +#!/usr/bin/env python +""" + direct_consumer.py + + This AMQP client reads messages from a message + queue named "message_queue". +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + + +#----- Initialization -------------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Read from queue -------------------------------------------- + +# Now let's create a local client queue and tell it to read +# incoming messages. + +# The consumer tag identifies the client-side queue. + +consumer_tag = "consumer1" +queue = client.queue(consumer_tag) + +# Call message_consume() to tell the broker to deliver messages +# from the AMQP queue to this local client queue. The broker will +# start delivering messages as soon as message_consume() is called. + +session.message_subscribe(queue="message_queue", destination=consumer_tag) +session.message_flow(consumer_tag, 0, 0xFFFFFFFF) +session.message_flow(consumer_tag, 1, 0xFFFFFFFF) + +# Initialize 'final' and 'content', variables used to identify the last message. + +final = "That's all, folks!" # In a message body, signals the last message +content = "" # Content of the last message read + +message = None +while content != final: + message = queue.get(timeout=10) + content = message.content.body + print content + +# Messages are not removed from the queue until they are +# acknowledged. Using cumulative=True, all messages from the session +# up to and including the one identified by the delivery tag are +# acknowledged. This is more efficient, because there are fewer +# network round-trips. + +message.complete(cumulative=True) + +#----- Cleanup ------------------------------------------------ + +# Clean up before exiting so there are no open threads. +# + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,48 @@ +#!/usr/bin/env python +""" + direct_producer.py + + Publishes messages to an AMQP direct exchange, using + the routing key "routing_key" +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Initialization ----------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +client = Client(host, port, qpid.spec.load(amqp_spec)) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Publish some messages ------------------------------ + +# Create some messages and put them on the broker. + +for i in range(10): + message = Content(body="message " + str(i)) + session.message_transfer(destination="amq.fanout", content=message) + +final="That's all, folks!" +message=Content(final) +session.message_transfer(destination="amq.fanout", content=message) + +#----- Cleanup -------------------------------------------- + +# Clean up before exiting so there are no open threads. + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/fanout/fanout_producer.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,118 @@ +#!/usr/bin/env python +""" + topic_consumer.py + + This AMQP client reads all messages from the + "news", "weather", "usa", and "europe" queues + created and bound by config_topic_exchange.py. +""" + +import base64 + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Functions ------------------------------------------- + +def dump_queue(client, queue_name): + + print "Messages queue: " + queue_name + + consumer_tag = queue_name # Use the queue name as the consumer tag - need a unique tag + queue = client.queue(consumer_tag) + + # Call basic_consume() to tell the broker to deliver messages + # from the AMQP queue to a local client queue. The broker will + # start delivering messages as soon as basic_consume() is called. + + session.message_subscribe(queue=queue_name, destination=consumer_tag) + session.message_flow(consumer_tag, 0, 0xFFFFFFFF) + session.message_flow(consumer_tag, 1, 0xFFFFFFFF) + + content = "" # Content of the last message read + final = "That's all, folks!" # In a message body, signals the last message + message = 0 + + while content != final: + try: + message = queue.get() + content = message.content.body + print content + except Empty: + if message != 0: + message.complete(cumulative=True) + print "No more messages!" + return + + + # Messages are not removed from the queue until they + # are acknowledged. Using multiple=True, all messages + # in the channel up to and including the one identified + # by the delivery tag are acknowledged. This is more efficient, + # because there are fewer network round-trips. + + if message != 0: + message.complete(cumulative=True) + + +#----- Initialization -------------------------------------- + +# Set parameters for login + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +spec = qpid.spec.load(amqp_spec) +client = Client(host, port, spec) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session_info = session.session_open() +session_id = session_info.session_id + +#----- Main Body -- ---------------------------------------- + + +news = "news" + base64.urlsafe_b64encode(session_id) +weather = "weather" + base64.urlsafe_b64encode(session_id) +usa = "usa" + base64.urlsafe_b64encode(session_id) +europe = "europe" + base64.urlsafe_b64encode(session_id) + +session.queue_declare(queue=news, exclusive=True) +session.queue_declare(queue=weather, exclusive=True) +session.queue_declare(queue=usa, exclusive=True) +session.queue_declare(queue=europe, exclusive=True) + +# Routing keys may be "usa.news", "usa.weather", "europe.news", or "europe.weather". + +# The '#' symbol matches one component of a multipart name, e.g. "#.news" matches +# "europe.news" or "usa.news". + +session.queue_bind(exchange="amq.topic", queue=news, routing_key="#.news") +session.queue_bind(exchange="amq.topic", queue=weather, routing_key="#.weather") +session.queue_bind(exchange="amq.topic", queue=usa, routing_key="usa.#") +session.queue_bind(exchange="amq.topic", queue=europe, routing_key="europe.#") + +# Remind the user to start the topic producer + +print "Queues create - please start the topic producer" + +# Call dump_queue to print messages from each queue + +dump_queue(client, news) +dump_queue(client, weather) +dump_queue(client, usa) +dump_queue(client, europe) + +#----- Cleanup ------------------------------------------------ + +# Clean up before exiting so there are no open threads. + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/pubsub/topic_consumer.py ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py?rev=601467&view=auto ============================================================================== --- incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py (added) +++ incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py Wed Dec 5 10:53:36 2007 @@ -0,0 +1,96 @@ +#!/usr/bin/env python +""" + topic_producer.py + + This is a simple AMQP publisher application that uses a + Topic exchange. The publisher specifies the routing key + and the exchange for each message. +""" + +import qpid +from qpid.client import Client +from qpid.content import Content +from qpid.queue import Empty + +#----- Initialization ----------------------------------- + +# Set parameters for login. + +host="127.0.0.1" +port=5672 +amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml" +user="guest" +password="guest" + +# Create a client and log in to it. + +spec = qpid.spec.load(amqp_spec) +client = Client(host, port, spec) +client.start({"LOGIN": user, "PASSWORD": password}) + +session = client.session() +session.session_open() + +#----- Publish some messages ------------------------------ + +# Create some messages and put them on the broker. Use the +# topic exchange. The routing keys are "usa.news", "usa.weather", +# "europe.news", and "europe.weather". + +final = "That's all, folks!" + +# We'll use the same routing key for all messages in the loop, and +# also for the terminating message. + +# usa.news + +for i in range(5): + message = Content("message " + str(i)) + message["routing_key"] = "usa.news" + session.message_transfer(destination="amq.topic", content=message) + +message = Content(final) +message["routing_key"] = "usa.news" +session.message_transfer(destination="amq.topic", content=message) + +# usa.weather + + +for i in range(5): + message = Content("message " + str(i)) + message["routing_key"] = "usa.weather" + session.message_transfer(destination="amq.topic", content=message) + +message = Content(final) +message["routing_key"] = "usa.weather" +session.message_transfer(destination="amq.topic", content=message) + +# europe.news + +for i in range(5): + message = Content("message " + str(i)) + message["routing_key"] = "europe.news" + session.message_transfer(destination="amq.topic", content=message) + +message = Content(final) +message["routing_key"] = "europe.news" +session.message_transfer(destination="amq.topic", content=message) + + +# europe.weather + +for i in range(5): + message = Content("message " + str(i)) + message["routing_key"] = "europe.weather" + session.message_transfer(destination="amq.topic", content=message) + +message = Content(final) +message["routing_key"] = "europe.weather" +session.message_transfer(destination="amq.topic", content=message) + + +#----- Cleanup -------------------------------------------- + +# Clean up before exiting so there are no open threads. + +session.session_close() Propchange: incubator/qpid/trunk/qpid/python/examples/pubsub/topic_producer.py ------------------------------------------------------------------------------ svn:eol-style = native