|
Add this skill
npx mdskills install sickn33/azure-storage-queue-pyWell-structured Azure Queue SDK reference with clear examples but lacks workflow guidance
1---2name: azure-storage-queue-py3description: |4 Azure Queue Storage SDK for Python. Use for reliable message queuing, task distribution, and asynchronous processing.5 Triggers: "queue storage", "QueueServiceClient", "QueueClient", "message queue", "dequeue".6package: azure-storage-queue7---89# Azure Queue Storage SDK for Python1011Simple, cost-effective message queuing for asynchronous communication.1213## Installation1415```bash16pip install azure-storage-queue azure-identity17```1819## Environment Variables2021```bash22AZURE_STORAGE_ACCOUNT_URL=https://<account>.queue.core.windows.net23```2425## Authentication2627```python28from azure.identity import DefaultAzureCredential29from azure.storage.queue import QueueServiceClient, QueueClient3031credential = DefaultAzureCredential()32account_url = "https://<account>.queue.core.windows.net"3334# Service client35service_client = QueueServiceClient(account_url=account_url, credential=credential)3637# Queue client38queue_client = QueueClient(account_url=account_url, queue_name="myqueue", credential=credential)39```4041## Queue Operations4243```python44# Create queue45service_client.create_queue("myqueue")4647# Get queue client48queue_client = service_client.get_queue_client("myqueue")4950# Delete queue51service_client.delete_queue("myqueue")5253# List queues54for queue in service_client.list_queues():55 print(queue.name)56```5758## Send Messages5960```python61# Send message (string)62queue_client.send_message("Hello, Queue!")6364# Send with options65queue_client.send_message(66 content="Delayed message",67 visibility_timeout=60, # Hidden for 60 seconds68 time_to_live=3600 # Expires in 1 hour69)7071# Send JSON72import json73data = {"task": "process", "id": 123}74queue_client.send_message(json.dumps(data))75```7677## Receive Messages7879```python80# Receive messages (makes them invisible temporarily)81messages = queue_client.receive_messages(82 messages_per_page=10,83 visibility_timeout=30 # 30 seconds to process84)8586for message in messages:87 print(f"ID: {message.id}")88 print(f"Content: {message.content}")89 print(f"Dequeue count: {message.dequeue_count}")9091 # Process message...9293 # Delete after processing94 queue_client.delete_message(message)95```9697## Peek Messages9899```python100# Peek without hiding (doesn't affect visibility)101messages = queue_client.peek_messages(max_messages=5)102103for message in messages:104 print(message.content)105```106107## Update Message108109```python110# Extend visibility or update content111messages = queue_client.receive_messages()112for message in messages:113 # Extend timeout (need more time)114 queue_client.update_message(115 message,116 visibility_timeout=60117 )118119 # Update content and timeout120 queue_client.update_message(121 message,122 content="Updated content",123 visibility_timeout=60124 )125```126127## Delete Message128129```python130# Delete after successful processing131messages = queue_client.receive_messages()132for message in messages:133 try:134 # Process...135 queue_client.delete_message(message)136 except Exception:137 # Message becomes visible again after timeout138 pass139```140141## Clear Queue142143```python144# Delete all messages145queue_client.clear_messages()146```147148## Queue Properties149150```python151# Get queue properties152properties = queue_client.get_queue_properties()153print(f"Approximate message count: {properties.approximate_message_count}")154155# Set/get metadata156queue_client.set_queue_metadata(metadata={"environment": "production"})157properties = queue_client.get_queue_properties()158print(properties.metadata)159```160161## Async Client162163```python164from azure.storage.queue.aio import QueueServiceClient, QueueClient165from azure.identity.aio import DefaultAzureCredential166167async def queue_operations():168 credential = DefaultAzureCredential()169170 async with QueueClient(171 account_url="https://<account>.queue.core.windows.net",172 queue_name="myqueue",173 credential=credential174 ) as client:175 # Send176 await client.send_message("Async message")177178 # Receive179 async for message in client.receive_messages():180 print(message.content)181 await client.delete_message(message)182183import asyncio184asyncio.run(queue_operations())185```186187## Base64 Encoding188189```python190from azure.storage.queue import QueueClient, BinaryBase64EncodePolicy, BinaryBase64DecodePolicy191192# For binary data193queue_client = QueueClient(194 account_url=account_url,195 queue_name="myqueue",196 credential=credential,197 message_encode_policy=BinaryBase64EncodePolicy(),198 message_decode_policy=BinaryBase64DecodePolicy()199)200201# Send bytes202queue_client.send_message(b"Binary content")203```204205## Best Practices2062071. **Delete messages after processing** to prevent reprocessing2082. **Set appropriate visibility timeout** based on processing time2093. **Handle `dequeue_count`** for poison message detection2104. **Use async client** for high-throughput scenarios2115. **Use `peek_messages`** for monitoring without affecting queue2126. **Set `time_to_live`** to prevent stale messages2137. **Consider Service Bus** for advanced features (sessions, topics)214
Full transparency — inspect the skill content before installing.