#!/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"