linux shell快速搭建NSQ集群

自己研究的一个golang项目,里面用到了消息队列,因为NSQ 易于部署,并带有统计,管理和生产者的内置HTTP接口 的优点,而且我本身对消息顺序就不关注。但在开发过程中频繁的敲shell命令麻烦,索性自己写个shell快速搭建NSQ集群,shell具体代码如下

#!/usr/bin/env bash
###########################################################
#Author:mengdj@outlook.com
#Created Time:2020.12.16 11:56
#Description:execute nsq server
#Version:0.0.1
#File:nsqh
###########################################################

NSQ_VERSION=`./nsqd --version`
NSQ_ADDRESS="127.0.0.1"
NSQ_CURRENT_DIR=$(pwd)
NSQ_LOG_DIR=$NSQ_CURRENT_DIR/log

function start(){
	#create nsqlookupd
	for p in {1..2};
	do
    		$NSQ_CURRENT_DIR/nsqlookupd \
			-broadcast-address="$NSQ_ADDRESS" \
			-tcp-address="$NSQ_ADDRESS:900$p" \
			-http-address="$NSQ_ADDRESS:901$p" >> "$NSQ_LOG_DIR/nsqlookupd.log" 2>&1 &
	done
	
	#create nsqd
	for p in {1..4};
	do
		if [ ! -d $NSQ_CURRENT_DIR"/data/"$p ];then
			mkdir -p $NSQ_CURRENT_DIR"/data/"$p
			if [ ! $? -eq 0 ];then
				echo 'create data directory failture.'
				stop
				exit
			fi
		fi
    		$NSQ_CURRENT_DIR/nsqd \
			-data-path "data/$p" \
			-broadcast-address="$NSQ_ADDRESS" \
			-tcp-address="$NSQ_ADDRESS:1001$p" \
			-http-address="$NSQ_ADDRESS:1002$p" \
			-lookupd-tcp-address="$NSQ_ADDRESS:9001" \
			-lookupd-tcp-address="$NSQ_ADDRESS:9002" >> "$NSQ_LOG_DIR/nsqd.log" 2>&1 &
	done

	#nsqadmin
	$NSQ_CURRENT_DIR/nsqadmin \
		-http-address="0.0.0.0:9000" \
		-lookupd-http-address="$NSQ_ADDRESS:9011" \
		-lookupd-http-address="$NSQ_ADDRESS:9012" >> "$NSQ_LOG_DIR/nsqadmin.log" 2>&1 &
}

function restart(){
	stop
	start
}

#stop process
function stop(){
	for process in nsqlookupd nsqd nsqadmin;
	do
		pkill "$process"
	done
	echo 'ok'
}

#help info
function help(){
	echo $NSQ_VERSION
	echo 'nsqh start|stop|restart|help'
}

#status
function status(){
	local count=0
	for process in nsqlookupd nsqd nsqadmin;
	do
		local result=`ps -ef|grep "$NSQ_CURRENT_DIR/$process"|grep -v grep|awk '$1="";$3="";$4="";$5="";$6="";$7="";{print $0}'`
		if [ -n "$result" ];then
			echo $result
			let 'count=count+1'
		fi
	done
	if [ $count -ne 0 ];then
		echo -e '\033[32m running \033[0m'
	else
		echo 'stoped.'
	fi
}

if [ $# -eq 0 ];then
	echo 'param can not null.'
else
	if [ ! -d $NSQ_LOG_DIR ];then
		mkdir -p $NSQ_LOG_DIR
		if [ ! $? -eq 0 ];then
			exit
		fi
	fi
	case $1 in
		start)
			start
			;;
		stop)
			stop
			;;
		restart)
			restart
			;;
		status)
			status
			;;
		help)
			help
			;;
	esac
fi

启动 ./nsqh start

重启 ./nsqh restart

停止 ./nsqh stop

另nsq不提供32位的linux版本,所有我自行编译了一份32位的版本,下载地址见:https://download.csdn.net/download/mak0000/13706752

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值