50 lines
1.8 KiB
Bash
Executable File
50 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Local services start RocketMQ consumers before any business event is produced,
|
|
# so relying on producer-side auto topic creation makes a fresh broker fail at
|
|
# startup. Keep the fixed owner-outbox topics explicit and idempotent here.
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
cd "${PROJECT_ROOT}"
|
|
|
|
"${SCRIPT_DIR}/prepare-local-rocketmq-config.sh" >/dev/null
|
|
export ROCKETMQ_BROKER_CONFIG="${PROJECT_ROOT}/tmp/rocketmq/broker.local.conf"
|
|
"${SCRIPT_DIR}/resolve-compose-container-conflicts.sh" rocketmq-namesrv rocketmq-broker
|
|
docker compose up -d rocketmq-namesrv >/dev/null
|
|
docker compose up -d --force-recreate rocketmq-broker >/dev/null
|
|
|
|
MQADMIN="/home/rocketmq/rocketmq-5.3.1/bin/mqadmin"
|
|
NAMESRV="rocketmq-namesrv:9876"
|
|
CLUSTER="hyapp-local"
|
|
TOPICS=(
|
|
"hyapp_wallet_outbox"
|
|
"hyapp_wallet_realtime_outbox"
|
|
"hyapp_room_outbox"
|
|
"hyapp_room_rocket_launch"
|
|
"hyapp_user_outbox"
|
|
"hyapp_message_action_outbox"
|
|
"hyapp_game_outbox"
|
|
)
|
|
|
|
# The broker process can accept a container start before it has registered with
|
|
# NameServer. Wait for the cluster view so updateTopic targets the real broker.
|
|
for _ in {1..60}; do
|
|
if docker compose exec -T rocketmq-broker "${MQADMIN}" clusterList -n "${NAMESRV}" 2>/dev/null | grep -q "${CLUSTER}"; then
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
if ! docker compose exec -T rocketmq-broker "${MQADMIN}" clusterList -n "${NAMESRV}" 2>/dev/null | grep -q "${CLUSTER}"; then
|
|
printf 'rocketmq broker did not register in cluster %s before topic init\n' "${CLUSTER}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
for topic in "${TOPICS[@]}"; do
|
|
printf 'applying rocketmq topic: %s\n' "${topic}"
|
|
docker compose exec -T rocketmq-broker "${MQADMIN}" updateTopic -n "${NAMESRV}" -c "${CLUSTER}" -t "${topic}" -r 8 -w 8 >/dev/null
|
|
done
|