Merge "Remove the partial implementation of ack_on_error"
This commit is contained in:
commit
875acfc29b
oslo/messaging/_drivers
@ -164,13 +164,11 @@ class ConnectionContext(rpc_common.Connection):
|
|||||||
def create_worker(self, topic, proxy, pool_name):
|
def create_worker(self, topic, proxy, pool_name):
|
||||||
self.connection.create_worker(topic, proxy, pool_name)
|
self.connection.create_worker(topic, proxy, pool_name)
|
||||||
|
|
||||||
def join_consumer_pool(self, callback, pool_name, topic, exchange_name,
|
def join_consumer_pool(self, callback, pool_name, topic, exchange_name):
|
||||||
ack_on_error=True):
|
|
||||||
self.connection.join_consumer_pool(callback,
|
self.connection.join_consumer_pool(callback,
|
||||||
pool_name,
|
pool_name,
|
||||||
topic,
|
topic,
|
||||||
exchange_name,
|
exchange_name)
|
||||||
ack_on_error)
|
|
||||||
|
|
||||||
def consume_in_thread(self):
|
def consume_in_thread(self):
|
||||||
self.connection.consume_in_thread()
|
self.connection.consume_in_thread()
|
||||||
|
@ -189,7 +189,6 @@ class ConsumerBase(object):
|
|||||||
except Exception:
|
except Exception:
|
||||||
LOG.exception(_("Failed to process message... skipping it."))
|
LOG.exception(_("Failed to process message... skipping it."))
|
||||||
finally:
|
finally:
|
||||||
# TODO(sandy): Need support for optional ack_on_error.
|
|
||||||
self.session.acknowledge(message)
|
self.session.acknowledge(message)
|
||||||
|
|
||||||
def get_receiver(self):
|
def get_receiver(self):
|
||||||
@ -729,7 +728,7 @@ class Connection(object):
|
|||||||
return consumer
|
return consumer
|
||||||
|
|
||||||
def join_consumer_pool(self, callback, pool_name, topic,
|
def join_consumer_pool(self, callback, pool_name, topic,
|
||||||
exchange_name=None, ack_on_error=True):
|
exchange_name=None):
|
||||||
"""Register as a member of a group of consumers for a given topic from
|
"""Register as a member of a group of consumers for a given topic from
|
||||||
the specified exchange.
|
the specified exchange.
|
||||||
|
|
||||||
|
@ -134,7 +134,6 @@ class ConsumerBase(object):
|
|||||||
self.tag = str(tag)
|
self.tag = str(tag)
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
self.queue = None
|
self.queue = None
|
||||||
self.ack_on_error = kwargs.get('ack_on_error', True)
|
|
||||||
self.reconnect(channel)
|
self.reconnect(channel)
|
||||||
|
|
||||||
def reconnect(self, channel):
|
def reconnect(self, channel):
|
||||||
@ -147,32 +146,16 @@ class ConsumerBase(object):
|
|||||||
def _callback_handler(self, message, callback):
|
def _callback_handler(self, message, callback):
|
||||||
"""Call callback with deserialized message.
|
"""Call callback with deserialized message.
|
||||||
|
|
||||||
Messages that are processed without exception are ack'ed.
|
Messages that are processed and ack'ed.
|
||||||
|
|
||||||
If the message processing generates an exception, it will be
|
|
||||||
ack'ed if ack_on_error=True. Otherwise it will be .reject()'ed.
|
|
||||||
Rejection is better than waiting for the message to timeout.
|
|
||||||
Rejected messages are immediately requeued.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ack_msg = False
|
|
||||||
try:
|
try:
|
||||||
msg = rpc_common.deserialize_msg(message.payload)
|
msg = rpc_common.deserialize_msg(message.payload)
|
||||||
callback(msg)
|
callback(msg)
|
||||||
ack_msg = True
|
|
||||||
except Exception:
|
except Exception:
|
||||||
if self.ack_on_error:
|
LOG.exception(_("Failed to process message"
|
||||||
ack_msg = True
|
" ... skipping it."))
|
||||||
LOG.exception(_("Failed to process message"
|
message.ack()
|
||||||
" ... skipping it."))
|
|
||||||
else:
|
|
||||||
LOG.exception(_("Failed to process message"
|
|
||||||
" ... will requeue."))
|
|
||||||
finally:
|
|
||||||
if ack_msg:
|
|
||||||
message.ack()
|
|
||||||
else:
|
|
||||||
message.reject()
|
|
||||||
|
|
||||||
def consume(self, *args, **kwargs):
|
def consume(self, *args, **kwargs):
|
||||||
"""Actually declare the consumer on the amqp channel. This will
|
"""Actually declare the consumer on the amqp channel. This will
|
||||||
@ -708,12 +691,11 @@ class Connection(object):
|
|||||||
self.declare_consumer(DirectConsumer, topic, callback)
|
self.declare_consumer(DirectConsumer, topic, callback)
|
||||||
|
|
||||||
def declare_topic_consumer(self, topic, callback=None, queue_name=None,
|
def declare_topic_consumer(self, topic, callback=None, queue_name=None,
|
||||||
exchange_name=None, ack_on_error=True):
|
exchange_name=None):
|
||||||
"""Create a 'topic' consumer."""
|
"""Create a 'topic' consumer."""
|
||||||
self.declare_consumer(functools.partial(TopicConsumer,
|
self.declare_consumer(functools.partial(TopicConsumer,
|
||||||
name=queue_name,
|
name=queue_name,
|
||||||
exchange_name=exchange_name,
|
exchange_name=exchange_name,
|
||||||
ack_on_error=ack_on_error,
|
|
||||||
),
|
),
|
||||||
topic, callback)
|
topic, callback)
|
||||||
|
|
||||||
@ -779,7 +761,7 @@ class Connection(object):
|
|||||||
self.declare_topic_consumer(topic, proxy_cb, pool_name)
|
self.declare_topic_consumer(topic, proxy_cb, pool_name)
|
||||||
|
|
||||||
def join_consumer_pool(self, callback, pool_name, topic,
|
def join_consumer_pool(self, callback, pool_name, topic,
|
||||||
exchange_name=None, ack_on_error=True):
|
exchange_name=None):
|
||||||
"""Register as a member of a group of consumers for a given topic from
|
"""Register as a member of a group of consumers for a given topic from
|
||||||
the specified exchange.
|
the specified exchange.
|
||||||
|
|
||||||
@ -800,7 +782,6 @@ class Connection(object):
|
|||||||
topic=topic,
|
topic=topic,
|
||||||
exchange_name=exchange_name,
|
exchange_name=exchange_name,
|
||||||
callback=callback_wrapper,
|
callback=callback_wrapper,
|
||||||
ack_on_error=ack_on_error,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user