Bases: zaqar.storage.base.Message, zaqar.storage.redis.scripting.Mixin
Implements message resource operations using Redis.
Messages are scoped by project + queue.
Redis Data Structures:
Message id’s list (Redis sorted set)
Each queue in the system has a set of message ids currently in the queue. The list is sorted based on a ranking which is incremented atomically using the counter(MESSAGE_RANK_COUNTER_SUFFIX) also stored in the database for every queue.
Key: <project_id>.<queue_name>.messages
Index of message ID lists (Redis sorted set)
This is a sorted set that facilitates discovery of all the message ID lists. This is necessary when performing garbage collection on the IDs contained within these lists.
Key: msgset_index
Messages(Redis Hash):
Scoped by the UUID of the message, the redis datastructure has the following information.
Name Field id id ttl t expires e body b claim c claim expiry time c.e client uuid u created time cr
Messages rank counter (Redis Hash):
Key: <project_id>.<queue_name>.rank_counter
Garbage-collect expired message data.
Not all message data can be automatically expired. This method cleans up the remainder.
Returns: | Number of messages removed |
---|