summaryrefslogtreecommitdiff
path: root/qpid/python/examples/request-response
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-05-01 10:15:35 +0000
committerGordon Sim <gsim@apache.org>2008-05-01 10:15:35 +0000
commit5fe0458b26fdf5ec233d8181201d3673a15006ae (patch)
treea78180e863ad354638fbe58c568dc134dab408fb /qpid/python/examples/request-response
parent27ecd6f07fb30357a77cbcf8ced20d7711b0db08 (diff)
downloadqpid-python-5fe0458b26fdf5ec233d8181201d3673a15006ae.tar.gz
QPID-966: applied patch from rajith; altered to use uuid as session name; updated verify scripts for automated testing;
re-enabled automated testing in c++ build git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@652469 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python/examples/request-response')
-rwxr-xr-xqpid/python/examples/request-response/client.py61
-rwxr-xr-xqpid/python/examples/request-response/server.py57
-rw-r--r--qpid/python/examples/request-response/verify2
-rw-r--r--qpid/python/examples/request-response/verify.in4
4 files changed, 66 insertions, 58 deletions
diff --git a/qpid/python/examples/request-response/client.py b/qpid/python/examples/request-response/client.py
index 6561bb6fee..8f7d430d1b 100755
--- a/qpid/python/examples/request-response/client.py
+++ b/qpid/python/examples/request-response/client.py
@@ -6,22 +6,22 @@
"""
-import base64
-
import qpid
import sys
-from qpid.client import Client
-from qpid.content import Content
+import os
+from qpid.util import connect
+from qpid.connection import Connection
+from qpid.datatypes import Message, RangedSet, uuid4
from qpid.queue import Empty
#----- Functions -------------------------------------------
-def dump_queue(client, queue_name):
+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 = client.queue(consumer_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
@@ -36,7 +36,8 @@ def dump_queue(client, queue_name):
while True:
try:
message = queue.get(timeout=10)
- content = message.content.body
+ content = message.body
+ session.message_accept(RangedSet(message.id))
print "Response: " + content
except Empty:
print "No more messages!"
@@ -52,8 +53,8 @@ def dump_queue(client, queue_name):
# by the delivery tag are acknowledged. This is more efficient,
# because there are fewer network round-trips.
- if message != 0:
- message.complete(cumulative=True)
+ #if message != 0:
+ # message.complete(cumulative=True)
#----- Initialization --------------------------------------
@@ -62,21 +63,21 @@ def dump_queue(client, queue_name):
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
-amqp_spec="/usr/share/amqp/amqp.0-10-preview.xml"
user="guest"
password="guest"
+amqp_spec=""
-# 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})
+try:
+ amqp_spec = os.environ["AMQP_SPEC"]
+except KeyError:
+ amqp_spec="/usr/share/amqp/amqp.0-10.xml"
-# Open the session. Save the session id.
+# Create a connection.
+conn = Connection (connect (host,port), qpid.spec.load(amqp_spec))
+conn.start()
-session = client.session()
-session_info = session.session_open()
-session_id = session_info.session_id
+session_id = str(uuid4())
+session = conn.session(session_id)
#----- Main Body -- ----------------------------------------
@@ -84,9 +85,9 @@ session_id = session_info.session_id
# same string as the name of the queue and the name of the routing
# key.
-replyTo = "ReplyTo:" + base64.urlsafe_b64encode(session_id)
+replyTo = "ReplyTo:" + session_id
session.queue_declare(queue=replyTo, exclusive=True)
-session.queue_bind(exchange="amq.direct", queue=replyTo, routing_key=replyTo)
+session.exchange_bind(exchange="amq.direct", queue=replyTo, binding_key=replyTo)
# Send some messages to the server's request queue
@@ -95,22 +96,20 @@ lines = ["Twas brilling, and the slithy toves",
"All mimsy were the borogroves,",
"And the mome raths outgrabe."]
-for l in lines:
- print "Request: " + l
- request=Content(l)
- request["routing_key"] = "request"
- request["reply_to"] = client.spec.struct("reply_to")
- request["reply_to"]["exchange_name"] = "amq.direct"
- request["reply_to"]["routing_key"] = replyTo
- session.message_transfer(destination="amq.direct", content=request)
+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))
# Now see what messages the server sent to our replyTo queue
-dump_queue(client, replyTo)
+dump_queue(replyTo)
#----- Cleanup ------------------------------------------------
# Clean up before exiting so there are no open threads.
-session.session_close()
+session.close(timeout=10)
diff --git a/qpid/python/examples/request-response/server.py b/qpid/python/examples/request-response/server.py
index 04b147d003..71c3161495 100755
--- a/qpid/python/examples/request-response/server.py
+++ b/qpid/python/examples/request-response/server.py
@@ -4,52 +4,61 @@
Server for a client/server example
"""
-
import qpid
import sys
-from qpid.client import Client
-from qpid.content import Content
+import os
+from random import randint
+from qpid.util import connect
+from qpid.connection import Connection
+from qpid.datatypes import Message, RangedSet, uuid4
from qpid.queue import Empty
#----- Functions -------------------------------------------
+def getProperty(msg, name):
+ for h in msg.headers:
+ if hasattr(h, name): return getattr(h, name)
+ return None
def respond(session, request):
# The routing key for the response is the request's reply-to
# property. The body for the response is the request's body,
# converted to upper case.
-
- response=Content(request.body.upper())
- response["routing_key"] = request["reply_to"]["routing_key"]
- session.message_transfer(destination=request["reply_to"]["exchange_name"], content=response)
+ reply_to = getProperty(request,"reply_to")
+ if reply_to == None:
+ raise Exception("reply to property needs to be there")
+
+ props = session.delivery_properties(routing_key=reply_to["routing_key"])
+ session.message_transfer(reply_to["exchange"],None, None, Message(props,request.body.upper()))
#----- 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
-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})
-
-# Create a session and open it.
-
-session = client.session()
-session.session_open()
+amqp_spec=""
+
+try:
+ amqp_spec = os.environ["AMQP_SPEC"]
+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()
+
+session_id = str(uuid4())
+session = conn.session(session_id)
#----- Main Body -- ----------------------------------------
# Create a request queue and subscribe to it
session.queue_declare(queue="request", exclusive=True)
-session.queue_bind(exchange="amq.direct", queue="request", routing_key="request")
+session.exchange_bind(exchange="amq.direct", queue="request", binding_key="request")
dest = "request_destination"
@@ -66,7 +75,7 @@ sys.stdout.flush()
# Respond to each request
-queue = client.queue(dest)
+queue = session.incoming(dest)
# If we get a message, send it back to the user (as indicated in the
# ReplyTo property)
@@ -74,8 +83,8 @@ queue = client.queue(dest)
while True:
try:
request = queue.get(timeout=100)
- respond(session, request.content)
- request.complete()
+ respond(session, request)
+ session.message_accept(RangedSet(request.id))
except Empty:
print "No more messages!"
break;
@@ -85,4 +94,4 @@ while True:
# Clean up before exiting so there are no open threads.
-session.session_close()
+session.close(timeout=10)
diff --git a/qpid/python/examples/request-response/verify b/qpid/python/examples/request-response/verify
index 2a2d479077..cf8151d4e4 100644
--- a/qpid/python/examples/request-response/verify
+++ b/qpid/python/examples/request-response/verify
@@ -2,4 +2,4 @@
background "Request server running" ./server.py
clients ./client.py
kill %% # Must kill the server.
-outputs "./client.py.out | remove_uuid64" " server.py.out | remove_uuid64"
+outputs "./client.py.out | remove_uuid" " server.py.out | remove_uuid"
diff --git a/qpid/python/examples/request-response/verify.in b/qpid/python/examples/request-response/verify.in
index f681253b3c..8d7f732ec8 100644
--- a/qpid/python/examples/request-response/verify.in
+++ b/qpid/python/examples/request-response/verify.in
@@ -1,4 +1,4 @@
-==== client.py.out | remove_uuid64
+==== client.py.out | remove_uuid
Request: Twas brilling, and the slithy toves
Request: Did gyre and gimble in the wabe.
Request: All mimsy were the borogroves,
@@ -9,6 +9,6 @@ Response: DID GYRE AND GIMBLE IN THE WABE.
Response: ALL MIMSY WERE THE BOROGROVES,
Response: AND THE MOME RATHS OUTGRABE.
No more messages!
-==== server.py.out | remove_uuid64
+==== server.py.out | remove_uuid
Request server running - run your client now.
(Times out after 100 seconds ...)