summaryrefslogtreecommitdiff
path: root/python/examples/request-response/client.py
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-05-12 17:23:21 +0000
committerGordon Sim <gsim@apache.org>2008-05-12 17:23:21 +0000
commit3a923f1e6a96e856911d3bbf49dc7af42e16c98b (patch)
treefbf3732cbddb43f09713652f8c1052f48582e7ed /python/examples/request-response/client.py
parent0655ff5aceb9d53eb256a05d7beb55b1c803c8de (diff)
downloadqpid-python-3a923f1e6a96e856911d3bbf49dc7af42e16c98b.tar.gz
QPID-1044: Part of patch from Jonathan Robie + changes to verify scripts to keep automated testing working.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@655568 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/examples/request-response/client.py')
-rwxr-xr-xpython/examples/request-response/client.py89
1 files changed, 49 insertions, 40 deletions
diff --git a/python/examples/request-response/client.py b/python/examples/request-response/client.py
index 8f7d430d1b..0fcd256d49 100755
--- a/python/examples/request-response/client.py
+++ b/python/examples/request-response/client.py
@@ -18,18 +18,7 @@ from qpid.queue import Empty
def dump_queue(queue_name):
- print "Messages queue: " + queue_name
-
- consumer_tag = queue_name # Use the queue name as the consumer tag - need a unique tag
- queue = session.incoming(consumer_tag)
-
- # Call message_subscribe() 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 message_subscribe() 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)
+ print "Messages on queue: " + queue_name
message = 0
@@ -47,25 +36,27 @@ def dump_queue(queue_name):
break
- # Messages are not removed from the queue until they
- # are acknowledged. Using cumulative=True, all messages
- # in 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.
-
- #if message != 0:
- # message.complete(cumulative=True)
-
-
#----- Initialization --------------------------------------
+
# Set parameters for login
-host=len(sys.argv) > 1 and sys.argv[1] or "127.0.0.1"
-port=len(sys.argv) > 2 and int(sys.argv[2]) or 5672
+host="127.0.0.1"
+port=5672
user="guest"
password="guest"
-amqp_spec=""
+amqp_spec="/usr/share/amqp/amqp.0-10.xml"
+
+# If an alternate host or port has been specified, use that instead
+# (this is used in our unit tests)
+#
+# If AMQP_SPEC is defined, use it to locate the spec file instead of
+# looking for it in the default location.
+
+if len(sys.argv) > 1 :
+ host=sys.argv[1]
+if len(sys.argv) > 2 :
+ port=int(sys.argv[2])
try:
amqp_spec = os.environ["AMQP_SPEC"]
@@ -73,11 +64,11 @@ except KeyError:
amqp_spec="/usr/share/amqp/amqp.0-10.xml"
# Create a connection.
-conn = Connection (connect (host,port), qpid.spec.load(amqp_spec))
-conn.start()
+socket = connect(host, port)
+connection = Connection (sock=socket, spec=qpid.spec.load(amqp_spec))
+connection.start()
+session = connection.session(str(uuid4()))
-session_id = str(uuid4())
-session = conn.session(session_id)
#----- Main Body -- ----------------------------------------
@@ -85,9 +76,23 @@ session = conn.session(session_id)
# same string as the name of the queue and the name of the routing
# key.
-replyTo = "ReplyTo:" + session_id
-session.queue_declare(queue=replyTo, exclusive=True)
-session.exchange_bind(exchange="amq.direct", queue=replyTo, binding_key=replyTo)
+reply_to = "reply_to:" + session.name
+session.queue_declare(queue=reply_to, exclusive=True)
+session.exchange_bind(exchange="amq.direct", queue=reply_to, binding_key=reply_to)
+
+# Create a local queue and subscribe it to the response queue
+
+local_queue_name = "local_queue"
+queue = session.incoming(local_queue_name)
+
+# Call message_subscribe() to tell the broker to deliver messages from
+# the server's reply_to queue to our local client queue. The server
+# will start delivering messages as soon as message credit is
+# available.
+
+session.message_subscribe(queue=reply_to, destination=local_queue_name)
+session.message_flow(local_queue_name, session.credit_unit.message, 0xFFFFFFFF)
+session.message_flow(local_queue_name, session.credit_unit.byte, 0xFFFFFFFF)
# Send some messages to the server's request queue
@@ -96,16 +101,20 @@ lines = ["Twas brilling, and the slithy toves",
"All mimsy were the borogroves,",
"And the mome raths outgrabe."]
-for ln in lines:
- print "Request: " + ln
- mp = session.message_properties()
- mp.reply_to = session.reply_to("amq.direct", replyTo)
- dp = session.delivery_properties(routing_key="request")
- session.message_transfer("amq.direct", None, None, Message(mp,dp,ln))
+# We will use the same reply_to and routing key
+# for each message
+
+message_properties = session.message_properties()
+message_properties.reply_to = session.reply_to("amq.direct", reply_to)
+delivery_properties = session.delivery_properties(routing_key="request")
+
+for line in lines:
+ print "Request: " + line
+ session.message_transfer(destination="amq.direct", message=Message(message_properties, delivery_properties, line))
-# Now see what messages the server sent to our replyTo queue
+# Now see what messages the server sent to our reply_to queue
-dump_queue(replyTo)
+dump_queue(reply_to)
#----- Cleanup ------------------------------------------------