51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Run Direct Exchange 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_publish import setup_direct_exchange, direct_publish
|
|
from comsumer.direct_consumer import start_all_direct_consumers
|
|
|
|
|
|
async def run_direct_exchange_test():
|
|
"""Run direct exchange test with producer and consumer"""
|
|
print("=== Running Direct Exchange Test ===")
|
|
|
|
# Start consumer in background
|
|
consumer_task = asyncio.create_task(start_all_direct_consumers())
|
|
|
|
# Wait for consumer to start
|
|
await asyncio.sleep(1)
|
|
|
|
# Setup exchange and publish messages
|
|
await setup_direct_exchange()
|
|
|
|
test_messages = [
|
|
("System crash, unable to start", "error"), # Route to error queue
|
|
("Disk space insufficient", "warning"), # Route to warning queue
|
|
("User login successful", "info"), # Route to info queue
|
|
("Debug info: Database connection successful", "debug") # Route to info queue
|
|
]
|
|
|
|
for msg, routing_key in test_messages:
|
|
await direct_publish(msg, routing_key)
|
|
await asyncio.sleep(0.5)
|
|
|
|
# Wait for messages to be processed
|
|
await asyncio.sleep(3)
|
|
|
|
# Cancel consumer
|
|
consumer_task.cancel()
|
|
print("✅ Direct exchange test completed successfully!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(run_direct_exchange_test())
|