51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Run Multi-Queue Load Balancing Test
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
|
|
# Add current directory to Python path
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
from product.direct_multi_publish import setup_multi_queue_balance, BalancedProducer
|
|
from comsumer.direct_multi_consumer import start_balanced_consumers
|
|
|
|
|
|
async def run_multi_queue_balance_test():
|
|
"""Run multi-queue load balancing test with producer and consumer"""
|
|
print("=== Running Multi-Queue Load Balancing Test ===")
|
|
|
|
queue_count = 3
|
|
|
|
# Start consumer in background
|
|
consumer_task = asyncio.create_task(start_balanced_consumers(queue_count=queue_count))
|
|
|
|
# Wait for consumer to start
|
|
await asyncio.sleep(1)
|
|
|
|
# Setup and publish messages
|
|
await setup_multi_queue_balance(queue_count=queue_count)
|
|
|
|
producer = BalancedProducer(queue_count=queue_count)
|
|
await producer.connect()
|
|
|
|
for i in range(10):
|
|
await producer.publish(f"Task {i + 1}: Multi-queue load balancing test")
|
|
await asyncio.sleep(0.3)
|
|
|
|
await producer.close()
|
|
|
|
# Wait for messages to be processed
|
|
await asyncio.sleep(3)
|
|
|
|
# Cancel consumer
|
|
consumer_task.cancel()
|
|
print("✅ Multi-queue load balancing test completed successfully!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(run_multi_queue_balance_test())
|