2026-05-09 10:40:17 +08:00

49 lines
1.2 KiB
Bash

#!/usr/bin/env sh
set -eu
NAMESRV_ADDR="${NAMESRV_ADDR:-rocketmq-namesrv:9876}"
ROCKETMQ_CLUSTER_NAME="${ROCKETMQ_CLUSTER_NAME:-DefaultCluster}"
ROCKETMQ_BOOTSTRAP_TOPICS="${ROCKETMQ_BOOTSTRAP_TOPICS:-DefaultHeartBeatSyncerTopic}"
echo "waiting for RocketMQ cluster ${ROCKETMQ_CLUSTER_NAME} via ${NAMESRV_ADDR}"
i=0
while [ "$i" -lt 60 ]; do
if sh mqadmin clusterList -n "$NAMESRV_ADDR" >/tmp/rocketmq-cluster.txt 2>/tmp/rocketmq-cluster.err; then
if grep -q "$ROCKETMQ_CLUSTER_NAME" /tmp/rocketmq-cluster.txt; then
break
fi
fi
i=$((i + 1))
sleep 2
done
if [ "$i" -ge 60 ]; then
echo "rocketmq cluster did not become ready: ${ROCKETMQ_CLUSTER_NAME}" >&2
cat /tmp/rocketmq-cluster.err >&2 || true
exit 1
fi
old_ifs="$IFS"
IFS=','
set -- $ROCKETMQ_BOOTSTRAP_TOPICS
IFS="$old_ifs"
for topic in "$@"; do
echo "ensuring RocketMQ topic ${topic}"
i=0
while [ "$i" -lt 20 ]; do
if sh mqadmin updateTopic -n "$NAMESRV_ADDR" -c "$ROCKETMQ_CLUSTER_NAME" -t "$topic"; then
break
fi
i=$((i + 1))
sleep 2
done
if [ "$i" -ge 20 ]; then
echo "failed to initialize RocketMQ topic: ${topic}" >&2
exit 1
fi
done
exec sh mqproxy -n "$NAMESRV_ADDR"