Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 1.72 KB

README.md

File metadata and controls

55 lines (41 loc) · 1.72 KB

test Python versions license

Message parsing and error handling decorator for RabbitMQ (AMQP 0-9-1) consumer callbacks

The decorator organizes the basic error handling of the message queuing protocol and the message parsing into a separate layer from the callback function.

The message parsing uses Pydantic.

Usage

Derive from the abstract decorator implementing the abstract methods:

>>> from callback_decorator import Callback
>>>
>>>
>>> class MyCallback(Callback):
...     @staticmethod
...     def reject_message(channel, method_frame, header_frame, body):
...         channel.basic_reject(method_frame.delivery_tag)
...     @staticmethod
...     def resend_message_later(channel, method_frame, header_frame, body):
...         pass
...     @staticmethod
...     def acknowledge_message(channel, method_frame, header_frame, body):
...         channel.basic_ack(method_frame.delivery_tag)

Create your custom data model:

>>> from pydantic import BaseModel
>>>
>>>
>>> class MyModel(BaseModel):
...     my_field: int

Decorate your callback function:

>>> @MyCallback(MyModel)
... def do_my_callback(my_object, headers):
...     ...

On error, raise one of the following exceptions:

  • Callback.FatalError, if the message can never be processed;
  • Callback.TryAgainError, if it is worth trying to process the message later.