def consume_mails_per_hour(self): queue_manager = QueueManager(self.queue_service_url) queue_channel = queue_manager.channel() queue_channel.queue_declare(queue=QueueManager.QUEUE_NAME, arguments={'x-max-priority': 255}) for i in range(0, self.mails_per_hour): method, properties, body = queue_channel.basic_get( QueueManager.QUEUE_NAME, auto_ack=True) if body is None: continue payload = QueuePayload(**json.loads(body)) QUEUE_CONSUMER_BY_TEMPLATE.labels(payload.template.value).inc() QUEUE_CONSUMER_BY_PRIORITY.labels(properties.priority).inc() self.mail_manager.send_mail(payload.recipient, payload.mail_params, payload.template) queue_manager.close()
dest='number_of_messages', default=1, help='The number of messages to generate', type=int) args = parser.parse_args() producer = Producer() for i in range(0, args.number_of_messages): template = random.randint(1, 5) if template == 1: payload = producer.produce_confirmation_to_mentor() elif template == 2: payload = producer.produce_confirmation_to_mentored() elif template == 3: payload = producer.produce_notify_mentor_of_mentored_leaving() elif template == 4: payload = producer.produce_notify_subscribed_users_not_selected() else: payload = producer.produce_notify_subscribed_users_of_mentoring_canceled( ) channel.basic_publish(exchange='', routing_key=QueueManager.QUEUE_NAME, body=json.dumps(payload.dict(), default=str), properties=pika.BasicProperties( priority=payload.get_priority_value())) print( f'Message with priority {payload.get_priority_value()} and template {payload.template} sent!' ) queue_manager.close()