from app.notification.common.config.app_settings import app_settings from app.notification.backend.infra.rabbitmq.async_subscriber import AsyncMQSubscriber from app.notification.backend.infra.email_handler import EmailHandler class EmailMQConsumer: @staticmethod async def mail_handler(register_key: str, message: dict, args: dict): return await EmailHandler().send_email(message) def __init__(self, mq_client: AsyncMQSubscriber) -> None: self.sender_id = app_settings.EMAIL_FROM self.email_handler = EmailHandler() self.mq_client = mq_client async def register_consumer(self): await self.mq_client.register_consumer( registry_key=app_settings.EMAIL_FROM, callback_method=EmailMQConsumer.mail_handler, args={"email_handler": self}, ) async def unregister_consumer(self): await self.mq_client.unregister_consumer(registry_key=self.sender_id)