Author: aconway
Date: Fri Feb 15 13:00:44 2008
New Revision: 628169
URL: http://svn.apache.org/viewvc?rev=628169&view=rev
Log:
Updated c++ and python fanout examples and verify scripts.
Removed:
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/declare_queues.cpp
incubator/qpid/trunk/qpid/python/examples/fanout/declare_queues.py
Modified:
incubator/qpid/trunk/qpid/bin/verify
incubator/qpid/trunk/qpid/cpp/examples/Makefile.am
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/Makefile
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/listener.cpp
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify.in
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp.in
incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py
incubator/qpid/trunk/qpid/python/examples/fanout/verify
incubator/qpid/trunk/qpid/python/examples/fanout/verify.in
Modified: incubator/qpid/trunk/qpid/bin/verify
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/bin/verify?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/bin/verify (original)
+++ incubator/qpid/trunk/qpid/bin/verify Fri Feb 15 13:00:44 2008
@@ -19,7 +19,11 @@
ARGS="${QPID_HOST:-localhost} $QPID_PORT"
-outfile() { echo $1.out; }
+outfile() {
+ file=$1
+ while [ -f $file.out ]; do file="${file}X"; done
+ echo $file.out
+ }
fail() { test -n "$*" && echo $* 1>&2 ; FAIL=1; return 1; }
Modified: incubator/qpid/trunk/qpid/cpp/examples/Makefile.am
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/Makefile.am?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/Makefile.am (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/Makefile.am Fri Feb 15 13:00:44 2008
@@ -6,7 +6,6 @@
examples/request-response/server.cpp \
examples/request-response/Makefile \
examples/fanout/Makefile \
- examples/fanout/declare_queues.cpp \
examples/fanout/listener.cpp \
examples/fanout/fanout_producer.cpp \
examples/pub-sub/Makefile \
Modified: incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/Makefile
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/Makefile?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/Makefile (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/Makefile Fri Feb 15
13:00:44 2008
@@ -2,7 +2,7 @@
CXXFLAGS=
LDFLAGS=-lqpidclient
-PROGRAMS=declare_queues fanout_producer listener
+PROGRAMS=fanout_producer listener
all: $(PROGRAMS)
Modified: incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/listener.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/listener.cpp?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/listener.cpp
(original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/listener.cpp Fri Feb
15 13:00:44 2008
@@ -69,12 +69,24 @@
//--------- Main body of program --------------------------------------------
+ // Unique name for private queue:
+ std::string myQueue=session.getId().str();
+ // Declear my queue.
+ session.queueDeclare(arg::queue=myQueue, arg::exclusive=true,
+ arg::autoDelete=true);
+ // Bind my queue to the fanout exchange.
+ // Note no routingKey required, the fanout exchange delivers
+ // all messages to all bound queues unconditionally.
+ session.queueBind(arg::exchange="amq.fanout", arg::queue=myQueue);
+
+ // Create a listener and subscribe it to my queue.
SubscriptionManager subscriptions(session);
- // Create a listener and subscribe it to the queue named "message_queue"
Listener listener(subscriptions);
- subscriptions.subscribe(listener, "message_queue");
+ subscriptions.subscribe(listener, myQueue);
+
// Deliver messages until the subscription is cancelled
// by Listener::received()
+ std::cout << "Listening" << std::endl;
subscriptions.run();
//---------------------------------------------------------------------------
Modified: incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify Fri Feb 15
13:00:44 2008
@@ -1,3 +1,6 @@
# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify
-clients ./declare_queues ./fanout_producer ./listener
-outputs ./declare_queues.out ./fanout_producer.out ./listener.out
+background "Listening" ./listener
+background "Listening" ./listener
+background "Listening" ./listener
+clients ./fanout_producer
+outputs ./fanout_producer.out "./listener.out | remove_uuid" "./listenerX.out
| remove_uuid" "./listenerXX.out | remove_uuid"
Modified: incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify.in
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify.in?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify.in (original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify.in Fri Feb 15
13:00:44 2008
@@ -1,6 +1,6 @@
-==== declare_queues.out
==== fanout_producer.out
-==== listener.out
+==== listener.out | remove_uuid
+Listening
Message: Message 0
Message: Message 1
Message: Message 2
@@ -12,4 +12,32 @@
Message: Message 8
Message: Message 9
Message: That's all, folks!
-Shutting down listener for message_queue
+Shutting down listener for
+==== listenerX.out | remove_uuid
+Listening
+Message: Message 0
+Message: Message 1
+Message: Message 2
+Message: Message 3
+Message: Message 4
+Message: Message 5
+Message: Message 6
+Message: Message 7
+Message: Message 8
+Message: Message 9
+Message: That's all, folks!
+Shutting down listener for
+==== listenerXX.out | remove_uuid
+Listening
+Message: Message 0
+Message: Message 1
+Message: Message 2
+Message: Message 3
+Message: Message 4
+Message: Message 5
+Message: Message 6
+Message: Message 7
+Message: Message 8
+Message: Message 9
+Message: That's all, folks!
+Shutting down listener for
Modified:
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python
(original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python
Fri Feb 15 13:00:44 2008
@@ -1,5 +1,7 @@
# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify
py=$PYTHON_EXAMPLES/fanout
-clients ./declare_queues ./fanout_producer $py/fanout_consumer.py
-outputs ./declare_queues.out ./fanout_producer.out $py/fanout_consumer.py.out
+background "Subscribed" $py/fanout_consumer.py
+background "Subscribed" $py/fanout_consumer.py
+clients ./fanout_producer
+outputs ./fanout_producer.out "$py/fanout_consumer.py.out | remove_uuid64"
"$py/fanout_consumer.pyX.out | remove_uuid64"
Modified:
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
(original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_cpp_python.in
Fri Feb 15 13:00:44 2008
@@ -1,14 +1,31 @@
-==== declare_queues.out
==== fanout_producer.out
-==== fanout_consumer.py.out
-Message 0
-Message 1
-Message 2
-Message 3
-Message 4
-Message 5
-Message 6
-Message 7
-Message 8
-Message 9
-That's all, folks!
+==== fanout_consumer.py.out | remove_uuid64
+Messages queue:
+Subscribed to queue
+Response: Message 0
+Response: Message 1
+Response: Message 2
+Response: Message 3
+Response: Message 4
+Response: Message 5
+Response: Message 6
+Response: Message 7
+Response: Message 8
+Response: Message 9
+Response: That's all, folks!
+No more messages!
+==== fanout_consumer.pyX.out | remove_uuid64
+Messages queue:
+Subscribed to queue
+Response: Message 0
+Response: Message 1
+Response: Message 2
+Response: Message 3
+Response: Message 4
+Response: Message 5
+Response: Message 6
+Response: Message 7
+Response: Message 8
+Response: Message 9
+Response: That's all, folks!
+No more messages!
Modified:
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp
(original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp
Fri Feb 15 13:00:44 2008
@@ -1,5 +1,7 @@
# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify
py=$PYTHON_EXAMPLES/fanout
-clients $py/declare_queues.py $py/fanout_producer.py ./listener
-outputs $py/declare_queues.py.out $py/fanout_producer.py.out ./listener.out
+background "Listening" ./listener
+background "Listening" ./listener
+clients $py/fanout_producer.py
+outputs $py/fanout_producer.py.out "./listener.out | remove_uuid"
"./listenerX.out | remove_uuid"
Modified:
incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp.in
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp.in?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp.in
(original)
+++ incubator/qpid/trunk/qpid/cpp/examples/examples/fanout/verify_python_cpp.in
Fri Feb 15 13:00:44 2008
@@ -1,6 +1,6 @@
-==== declare_queues.py.out
==== fanout_producer.py.out
-==== listener.out
+==== listener.out | remove_uuid
+Listening
Message: message 0
Message: message 1
Message: message 2
@@ -12,4 +12,18 @@
Message: message 8
Message: message 9
Message: That's all, folks!
-Shutting down listener for message_queue
+Shutting down listener for
+==== listenerX.out | remove_uuid
+Listening
+Message: message 0
+Message: message 1
+Message: message 2
+Message: message 3
+Message: message 4
+Message: message 5
+Message: message 6
+Message: message 7
+Message: message 8
+Message: message 9
+Message: That's all, folks!
+Shutting down listener for
Modified: 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=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py
(original)
+++ incubator/qpid/trunk/qpid/python/examples/fanout/fanout_consumer.py Fri Feb
15 13:00:44 2008
@@ -5,13 +5,57 @@
This AMQP client reads messages from a message
queue named "message_queue".
"""
-
+import base64
import qpid
import sys
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 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 "Subscribed to queue " + queue_name
+ sys.stdout.flush()
+
+ message = 0
+
+ while True:
+ try:
+ message = queue.get(timeout=10)
+ content = message.content.body
+ print "Response: " + content
+ except Empty:
+ print "No more messages!"
+ break
+ except:
+ print "Unexpected exception!"
+ 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 --------------------------------------
@@ -29,44 +73,22 @@
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_subscribe() 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_subscribe() 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
+session_info = session.session_open()
+session_id = session_info.session_id
-message = None
-while content != final:
- message = queue.get(timeout=10)
- content = message.content.body
- print content
+#----- Main Body -- ----------------------------------------
-# 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.
+# Make a unique queue name for my queue from the session ID.
+my_queue = base64.urlsafe_b64encode(session_id)
+session.queue_declare(queue=my_queue)
+
+# Bind my queue to the fanout exchange. No routing key is required
+# the fanout exchange copies messages unconditionally to every
+# bound queue
+session.queue_bind(queue=my_queue, exchange="amq.fanout")
-message.complete(cumulative=True)
+# Dump the messages on the queue.
+dump_queue(client, my_queue)
#----- Cleanup ------------------------------------------------
Modified: incubator/qpid/trunk/qpid/python/examples/fanout/verify
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/fanout/verify?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/examples/fanout/verify (original)
+++ incubator/qpid/trunk/qpid/python/examples/fanout/verify Fri Feb 15 13:00:44
2008
@@ -1,3 +1,5 @@
# See https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid/bin/verify
-clients ./declare_queues.py ./fanout_producer.py ./fanout_consumer.py
-outputs ./declare_queues.py.out ./fanout_producer.py.out
./fanout_consumer.py.out
+background "Subscribed" ./fanout_consumer.py
+background "Subscribed" ./fanout_consumer.py
+clients ./fanout_producer.py
+outputs ./fanout_producer.py.out "./fanout_consumer.py.out | remove_uuid64"
"./fanout_consumer.pyX.out | remove_uuid64"
Modified: incubator/qpid/trunk/qpid/python/examples/fanout/verify.in
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/examples/fanout/verify.in?rev=628169&r1=628168&r2=628169&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/examples/fanout/verify.in (original)
+++ incubator/qpid/trunk/qpid/python/examples/fanout/verify.in Fri Feb 15
13:00:44 2008
@@ -1,14 +1,31 @@
-==== declare_queues.py.out
==== fanout_producer.py.out
-==== fanout_consumer.py.out
-message 0
-message 1
-message 2
-message 3
-message 4
-message 5
-message 6
-message 7
-message 8
-message 9
-That's all, folks!
+==== fanout_consumer.py.out | remove_uuid64
+Messages queue:
+Subscribed to queue
+Response: message 0
+Response: message 1
+Response: message 2
+Response: message 3
+Response: message 4
+Response: message 5
+Response: message 6
+Response: message 7
+Response: message 8
+Response: message 9
+Response: That's all, folks!
+No more messages!
+==== fanout_consumer.pyX.out | remove_uuid64
+Messages queue:
+Subscribed to queue
+Response: message 0
+Response: message 1
+Response: message 2
+Response: message 3
+Response: message 4
+Response: message 5
+Response: message 6
+Response: message 7
+Response: message 8
+Response: message 9
+Response: That's all, folks!
+No more messages!