72 lines
No EOL
2 KiB
Bash
72 lines
No EOL
2 KiB
Bash
#!/bin/bash
|
|
# Init script for RabbitMQ queue setup
|
|
# This runs automatically when the container starts
|
|
|
|
set -e
|
|
|
|
# Wait for RabbitMQ to be ready
|
|
until rabbitmqctl status > /dev/null 2>&1; do
|
|
echo "Waiting for RabbitMQ to start..."
|
|
sleep 2
|
|
done
|
|
|
|
echo "RabbitMQ is ready. Setting up queues..."
|
|
|
|
# Since we're merging all analysis services into one, we only need ONE queue
|
|
# Create the unified analysis queue
|
|
rabbitmqctl eval '
|
|
rabbit_exchange:declare(
|
|
{resource, <<"/">>, exchange, <<"analysis">>},
|
|
topic,
|
|
true,
|
|
false,
|
|
false,
|
|
[]
|
|
).' || true
|
|
|
|
# Declare the unified analysis queue with proper settings
|
|
rabbitmqctl eval '
|
|
rabbit_amqqueue:declare(
|
|
{resource, <<"/">>, queue, <<"analysis_queue">>},
|
|
true, % Durable
|
|
false, % Not exclusive
|
|
false, % Not auto-delete
|
|
[], % No arguments
|
|
none % No owner
|
|
).' || true
|
|
|
|
# Bind the queue to the exchange
|
|
rabbitmqctl eval '
|
|
rabbit_binding:add_explicit(
|
|
{binding,
|
|
{resource, <<"/">>, exchange, <<"analysis">>},
|
|
<<"analysis.*">>,
|
|
{resource, <<"/">>, queue, <<"analysis_queue">>},
|
|
[]
|
|
}
|
|
).' || true
|
|
|
|
# Optional: Create a dead letter queue for failed messages
|
|
rabbitmqctl eval '
|
|
rabbit_amqqueue:declare(
|
|
{resource, <<"/">>, queue, <<"analysis_dlq">>},
|
|
true, % Durable
|
|
false, % Not exclusive
|
|
false, % Not auto-delete
|
|
[], % No arguments
|
|
none % No owner
|
|
).' || true
|
|
|
|
echo "✅ Queue setup complete!"
|
|
echo "Created queues:"
|
|
echo " - analysis_queue (main queue for all analysis types)"
|
|
echo " - analysis_dlq (dead letter queue for failed messages)"
|
|
|
|
# Set queue policies for message TTL and retry
|
|
rabbitmqctl set_policy analysis-retry \
|
|
"analysis_queue" \
|
|
'{"message-ttl":86400000, "dead-letter-exchange":"", "dead-letter-routing-key":"analysis_dlq"}' \
|
|
--priority 0 \
|
|
--apply-to queues || true
|
|
|
|
echo "✅ Queue policies configured!" |