diff options
| author | Gordon Sim <gsim@apache.org> | 2008-05-01 10:15:35 +0000 | 
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2008-05-01 10:15:35 +0000 | 
| commit | 7ca9c6bd32cca57d3c1dab3faa09c9dd9fbe3c51 (patch) | |
| tree | 33194732ba6b2da30e33e72417dfc18c7129d09e /python/examples/request-response/server.py | |
| parent | 4649905d79cb5a85f65f4097b2daecebc3080e93 (diff) | |
| download | qpid-python-7ca9c6bd32cca57d3c1dab3faa09c9dd9fbe3c51.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/qpid@652469 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/examples/request-response/server.py')
| -rwxr-xr-x | python/examples/request-response/server.py | 57 | 
1 files changed, 33 insertions, 24 deletions
| diff --git a/python/examples/request-response/server.py b/python/examples/request-response/server.py index 04b147d003..71c3161495 100755 --- a/python/examples/request-response/server.py +++ b/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) | 
