ports/net/rabbitmq/files/rabbitmq.in
Jimmy Olgeni 0a105e1045 Add a separate "wait" command to the startup script, to be used
with automated deployment systems to ensure that RabbitMQ is actually
available.

The pid file may exist, but it can still be empty when $rabbitmq_ctl
is executed. In this case the script would not wait for anything
and produce some weird output on the console.

PR:		ports/185962 (follow up)
2014-02-06 15:00:25 +00:00

55 lines
1.3 KiB
Bash

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: rabbitmq
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable RabbitMQ
#
# rabbitmq_enable="YES"
. /etc/rc.subr
name=rabbitmq
rcvar=rabbitmq_enable
load_rc_config $name
# Set some defaults
: ${rabbitmq_enable="NO"}
: ${rabbitmq_user="rabbitmq"}
rabbitmq_server="%%PREFIX%%/sbin/rabbitmq-server"
rabbitmq_ctl="%%PREFIX%%/sbin/rabbitmqctl"
pidfile="/var/run/rabbitmq.pid"
start_cmd="${name}_start"
stop_cmd="env HOME=/var/db/rabbitmq su -m ${rabbitmq_user} -c 'sh -c \"${rabbitmq_ctl} stop\"'"
stop_postcmd="wait_for_pids $rc_pid"
rotate_logs_cmd="env HOME=/var/db/rabbitmq su -m ${rabbitmq_user} -c 'sh -c \"${rabbitmq_ctl} rotate_logs\"'"
status_cmd="env HOME=/var/db/rabbitmq su -m ${rabbitmq_user} -c 'sh -c \"${rabbitmq_ctl} status\"'"
extra_commands="rotate_logs status wait"
wait_cmd=rabbitmq_wait
rabbitmq_start()
{
export HOME=/var/db/rabbitmq
unset ERL_LIBS
su -m ${rabbitmq_user} \
-c "sh -c \"${rabbitmq_server} -detached\""
# Grab pid (it appears that parsing the output of
# status is the most reliable method)
su -m ${rabbitmq_user} \
-c "sh -c \"${rabbitmq_ctl} status\"" \
| sed -n 's/[^p]*pid,\([0-9]*\)[^0-9]*/\1/p' > ${pidfile}
}
rabbitmq_wait()
{
$rabbitmq_ctl wait ${pidfile}
}
run_rc_command "$1"