Python kombu.Consumer() Examples
The following are 10
code examples of kombu.Consumer().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
kombu
, or try the search function
.
Example #1
Source File: amqp_exchange.py From pulsar with Apache License 2.0 | 6 votes |
def consume(self, queue_name, callback, check=True, connection_kwargs={}): queue = self.__queue(queue_name) log.debug("Consuming queue '%s'", queue) callbacks = [self.__ack_callback] if callback is not None: callbacks.append(callback) while check: heartbeat_thread = None try: with self.connection(self.__url, heartbeat=DEFAULT_HEARTBEAT, **connection_kwargs) as connection: with kombu.Consumer(connection, queues=[queue], callbacks=callbacks, accept=['json']): heartbeat_thread = self.__start_heartbeat(queue_name, connection) while check and connection.connected: try: connection.drain_events(timeout=self.__timeout) except socket.timeout: pass except (IOError, socket.error) as exc: self.__handle_io_error(exc, heartbeat_thread) except BaseException: log.exception("Problem consuming queue, consumer quitting in problematic fashion!") raise log.info("Done consuming queue %s" % queue_name)
Example #2
Source File: check.py From data_integration_celery with GNU General Public License v3.0 | 6 votes |
def test(url): from kombu import Exchange, Queue, Connection, Consumer, Producer task_queue = Queue('tasks', exchange=Exchange('celery', type='direct'), routing_key='tasks') # 生产者 with Connection(url) as conn: with conn.channel() as channel: producer = Producer(channel) producer.publish({'hello': 'world'}, retry=True, exchange=task_queue.exchange, routing_key=task_queue.routing_key, declare=[task_queue]) def get_message(body, message): print("receive message: %s" % body) # message.ack() # 消费者 with Connection(url) as conn: with conn.channel() as channel: consumer = Consumer(channel, queues=task_queue, callbacks=[get_message, ], prefetch_count=10) consumer.consume(no_ack=True)
Example #3
Source File: amqp_source.py From RackHD with Apache License 2.0 | 6 votes |
def __init__(self, logs, connection, name, exchange, routing_key, queue_name): self.__logs = logs self.__ignore_some_stuff = False self.name = name self.__event_callbacks = [] if queue_name is None: queue_name = '' exclusive = True else: exclusive = False chan = connection.channel() ex = Exchange(exchange, 'topic', channel=chan) queue = Queue(exchange=ex, routing_key=routing_key, exclusive=exclusive) consumer = Consumer(chan, queues=[queue], callbacks=[self.__message_cb]) consumer.consume() self.exchange = ex
Example #4
Source File: kombu.py From zentral with Apache License 2.0 | 5 votes |
def get_consumers(self, _, default_channel): queues = [ Queue(preprocessor.routing_key, exchange=raw_events_exchange, routing_key=preprocessor.routing_key, durable=True) for routing_key, preprocessor in self.preprocessors.items() ] return [Consumer(default_channel, queues=queues, accept=['json'], callbacks=[self.do_preprocess_raw_event])]
Example #5
Source File: kombu.py From zentral with Apache License 2.0 | 5 votes |
def get_consumers(self, _, default_channel): return [Consumer(default_channel, queues=[enrich_events_queue], accept=['json'], callbacks=[self.do_enrich_event])]
Example #6
Source File: kombu.py From zentral with Apache License 2.0 | 5 votes |
def get_consumers(self, _, default_channel): return [Consumer(default_channel, queues=[process_events_queue], accept=['json'], callbacks=[self.do_process_event])]
Example #7
Source File: kombu.py From zentral with Apache License 2.0 | 5 votes |
def get_consumers(self, _, default_channel): return [Consumer(default_channel, queues=[self.input_queue], accept=['json'], callbacks=[self.do_store_event])]
Example #8
Source File: check.py From data_integration_celery with GNU General Public License v3.0 | 5 votes |
def get_consumers(self, Consumer, channel): return [ Consumer(self.queues, callbacks=[self.on_message]), ] # 接收处理消息的回调函数
Example #9
Source File: client.py From commissaire with GNU General Public License v3.0 | 5 votes |
def get_consumers(self, Consumer, channel): """ Returns a list of kombu.Consumer instances to service all registered notification callbacks. If using the kombu.mixin.ConsumerMixin mixin class, these instances should be included in its get_consumers() method. :param Consumer: Message consumer class. :type Consumer: class :param channel: An open channel. :type channel: kombu.transport.*.Channel :returns: A list of consumer instances :rtype: [kombu.Consumer, ....] """ consumer_list = [] exchange = self.bus_mixin.producer.exchange for routing_key, callbacks in self.notify_callbacks.items(): queue = kombu.Queue( exchange=exchange, routing_key=routing_key) consumer = Consumer( queues=queue, callbacks=callbacks) consumer_list.append(consumer) self.bus_mixin.logger.info( 'Listening for "%s" notifications', routing_key) return consumer_list
Example #10
Source File: base.py From celery-message-consumer with Apache License 2.0 | 4 votes |
def setUp(self): super(BaseRetryHandlerIntegrationTest, self).setUp() # NOTE: # must be a real rabbitmq instance, we rely on rabbitmq # features (dead-letter exchange) for our retry queue logic self.connection = kombu.Connection( settings.BROKER_URL, connect_timeout=1, ) self.connection.ensure_connection() self.connection.connect() self.channel = self.connection.channel() self.handler = AMQPRetryHandler( self.channel, routing_key=self.routing_key, queue=self.routing_key, exchange=self.exchange, queue_arguments={}, func=lambda body: None, backoff_func=lambda attempt: 0, ) self.handler.declare_queues() queues = [ self.handler.worker_queue, self.handler.retry_queue, self.handler.archive_queue, ] for queue in queues: queue.purge() self.archive_consumer = kombu.Consumer( channel=self.channel, queues=[self.handler.archive_queue], callbacks=[self.handle_archive] ) for consumer in [self.handler.consumer, self.archive_consumer]: consumer.consume() self.producer = kombu.Producer( self.channel, exchange=self.handler.exchanges[self.handler.exchange], routing_key=self.routing_key, serializer='json' ) self.archives = []