import asyncio from punq import Container from aio_pika.abc import AbstractIncomingMessage from pyee import EventEmitter from shared.application.factory.application import Application as ApplicationFactory from shared.event.type import Type as EventType from feature.listen_user_message.listen_user_message import ListenUserMessage from feature.log_bus_message.log_bus_message import LogBusMessage from feature.listen_user_message.manager.message import Message as MessageManager async def main(container: Container, message: AbstractIncomingMessage) -> None: manager = container.resolve(MessageManager, message=message) emitter = container.resolve(EventEmitter) event = EventType.MESSAGE_RECEIVED try: received = manager.get_message() emitter.emit(event, received) await message.ack() except Exception: await message.reject() if __name__ == "__main__": factory = ApplicationFactory() application = factory.create_rabbitmq([ ListenUserMessage, LogBusMessage ]) asyncio.run(application.launch(main))