freeleaps-service-hub/app/notification/webapi/utils/email_consumer.py

25 lines
958 B
Python

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)