Source code for hastegeo.core.utils.queues
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
from azure.identity import DefaultAzureCredential # type: ignore
from azure.storage.queue import QueueServiceClient # type: ignore
[docs]class AzureQueueHandler:
[docs] def __init__(self, connection_string, queue_name, account_url):
if connection_string:
self.queue_service_client = (
QueueServiceClient.from_connection_string(connection_string)
)
else:
credential = DefaultAzureCredential()
self.queue_service_client = QueueServiceClient(
account_url=account_url, credential=credential
)
self.queue_client = self.queue_service_client.get_queue_client(
queue_name
)
# Check if the queue exists, if not, create it
try:
self.queue_client.get_queue_properties()
except Exception:
self.queue_client.create_queue()
[docs] def put_message(self, message, visibility_timeout=30):
self.queue_client.send_message(
message, visibility_timeout=visibility_timeout
)
[docs] def get_messages(self, max_messages=1):
messages = self.queue_client.receive_messages(
max_messages=max_messages
)
return [msg.content for msg in messages]
[docs] def get_message_by_id(self, message_id, pop_receipt=None):
message = self.queue_client.peek_message(message_id, pop_receipt)
return message.content if message else None
[docs] def delete_message(self, message_id, pop_receipt=None):
self.queue_client.delete_message(message_id, pop_receipt)