Source code for mersal.persistence.in_memory.in_memory_message_tracker
import uuid
from mersal.exceptions import MersalExceptionError
from mersal.idempotency import MessageTracker
from mersal.transport import TransactionContext
__all__ = ("InMemoryMessageTracker",)
[docs]
class InMemoryMessageTracker(MessageTracker):
"""Tracks handled messages in memory."""
[docs]
def __init__(self) -> None:
self._tracked_messages: set[uuid.UUID] = set()
[docs]
async def track_message(self, message_id: uuid.UUID, transaction_context: TransactionContext) -> None:
if message_id in self._tracked_messages:
raise MersalExceptionError("Message already tracked")
self._tracked_messages.add(message_id)
[docs]
async def is_message_tracked(self, message_id: uuid.UUID, transaction_context: TransactionContext) -> bool:
return message_id in self._tracked_messages