summaryrefslogtreecommitdiffstats
path: root/nova/fakerabbit.py
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@yahoo.com>2010-10-12 19:05:53 -0700
committerVishvananda Ishaya <vishvananda@yahoo.com>2010-10-12 19:05:53 -0700
commit7ba0ab1e22b0453024b0b85be80d4e4544f95943 (patch)
tree04aeb30b2de5e245e0f50e468a8587d1508b8f28 /nova/fakerabbit.py
parent924ababfdf430f25497e617e09a7d816450a7b1e (diff)
parentdbbdebbcd13b08ec2afb6d0d58144eeee6ecce84 (diff)
downloadnova-7ba0ab1e22b0453024b0b85be80d4e4544f95943.tar.gz
nova-7ba0ab1e22b0453024b0b85be80d4e4544f95943.tar.xz
nova-7ba0ab1e22b0453024b0b85be80d4e4544f95943.zip
merged trunk
Diffstat (limited to 'nova/fakerabbit.py')
-rw-r--r--nova/fakerabbit.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/nova/fakerabbit.py b/nova/fakerabbit.py
index 068025249..835973810 100644
--- a/nova/fakerabbit.py
+++ b/nova/fakerabbit.py
@@ -22,6 +22,7 @@ import logging
import Queue as queue
from carrot.backends import base
+from eventlet import greenthread
class Message(base.BaseMessage):
@@ -38,6 +39,7 @@ class Exchange(object):
def publish(self, message, routing_key=None):
logging.debug('(%s) publish (key: %s) %s',
self.name, routing_key, message)
+ routing_key = routing_key.split('.')[0]
if routing_key in self._routes:
for f in self._routes[routing_key]:
logging.debug('Publishing to route %s', f)
@@ -94,6 +96,18 @@ class Backend(object):
self._exchanges[exchange].bind(self._queues[queue].push,
routing_key)
+ def declare_consumer(self, queue, callback, *args, **kwargs):
+ self.current_queue = queue
+ self.current_callback = callback
+
+ def consume(self, *args, **kwargs):
+ while True:
+ item = self.get(self.current_queue)
+ if item:
+ self.current_callback(item)
+ raise StopIteration()
+ greenthread.sleep(0)
+
def get(self, queue, no_ack=False):
if not queue in self._queues or not self._queues[queue].size():
return None