zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

RabbitMQ 队列监控

2023-09-14 08:59:51 时间
##################################################   # Website http://www.netkiller.cn   # Author netkiller netkiller@msn.com    # OSCM https://github.com/oscm/shell   ##################################################   # You have to clean data  at midnight   # crontab -e   # 05 00 * * * /www/queue.gnuplot.sh clean   ##################################################   QUEUE=example   ##################################################   PROG=$(basename $0 .sh)   LOGFILE=/var/tmp/$PROG.log   PIDFILE=/var/tmp/$PROG.pid   GNUPLOTDATA=/var/tmp/queue.$PROG.$QUEUE.dat   PNGFILE=/www/example.com/www.example.com/public/img/queue   ##################################################   function collector(){       datetime=$(date +%H:%M:%S)       queue=$(rabbitmqctl list_queues | grep $QUEUE | awk -F  {print $2})       echo "$datetime $queue"   $GNUPLOTDATA              function generate(){           datetime=$(date +%Y-%m-%d %H:%M:%S)   gnuplot   EOF   set terminal png truecolor size 1024,480   set output "$PNGFILE-day.png"   set autoscale   set xdata time   set timefmt "%H:%M"   set format x "%H:%M"   set style data lines   set xlabel "$datetime GMT+800"   set ylabel "Burndown"   set title "RabbitMQ Burndown - Day"   set grid   plot "$GNUPLOTDATA" using 1:2 title "Burndown"   EOF   hour=$(date +%H)   gnuplot   EOF   set terminal png truecolor size 1024,480   set output "$PNGFILE-hour.png"   set autoscale   set xdata time   set timefmt "%H:%M"   set xrange ["$hour:00":"$hour:60"]   set format x "%H:%M"   set style data lines   set xlabel "$datetime GMT+800"   set ylabel "Burndown"   set title "RabbitMQ Burndown - Hour"   set grid   plot "$GNUPLOTDATA" using 1:2 title "Burndown"   EOF   minute=$(date +%H:%M)   minute5=$(date --date=5 minutes ago "+%H:%M")   gnuplot   EOF   $LOGFILE.minute   set terminal png truecolor size 1024,480   set output "$PNGFILE-minute.png"   set autoscale   set xdata time   set timefmt "%H:%M:%S"   set xrange ["$minute5:00":"$minute:60"]   set format x "%H:%M:%S"   set style data lines   set xlabel "$datetime GMT+800"   set ylabel "Burndown"   set title "RabbitMQ Burndown - Minute"   set grid   plot "$GNUPLOTDATA" using 1:2 title "Burndown"   EOF          function daemon(){              for (( ; ; )) do           collector           generate           sleep 60       done         echo $!   $PIDFILE   }      function start(){       if [ ! -f $RRDDATA ]; then           create       fi       daemon   function stop(){       [ -f $PIDFILE ]   kill `cat $PIDFILE`   rm -rf $PIDFILE   function status(){       ps ax | grep $PROG | grep -v grep | grep -v status   function clean(){       rm -rf $GNUPLOTDATA   function usage(){           echo $"Usage: $0 {start|stop|restart|status|clean}"           echo $"   Options    -v, --verbose               increase verbosity    -q, --quiet                 suppress non-error messages    -h, --help                  show this help (-h works with no other options)    Website http://www.netkiller.cn    Author netkiller netkiller@msn.com    case "$1" in       start)           start       ;;       stop)           stop       ;;       restart)           stop           start       ;;       status)           status           ;;       -d)           daemon           ;;       clean)           clean           ;;       *)           usage           ;;   esac   RETVAL=$?   exit $RETVAL  
RabbitMQ学习(十):幂等性、优先级队列、惰性队列 以支付为例,用户购买商品后支付,扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了;用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误 立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等。
RabbitMQ学习(九):延迟队列 延时队列中,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间内被处理的 元素的队列。 其实延迟队列就是死信队列的一种。
RabbitMQ学习(八):死信队列 死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有 后续的处理,就变成了死信。
springcloud:RabbitMQ死信队列与延迟交换机实现(四) 死信队列是消息队列中非常重要的概念,同时我们需要业务场景中都需要延迟发送的概念,比如12306中的30分钟后未支付订单取消。那么本期,我们就来讲解死信队列,以及如何通过延迟交换机来实现延迟发送的需求。
rabbitMQ延时队列与TTL和DLX、延迟队列的相关介绍 TTL是Time To Live的缩写, 也就是生存时间。 RabbitMq支持对消息和队列设置TTL,对消息这设置是在发送的时候指定,对队列设置是从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除。 如果两种方式一起使用消息的TTL和队列的TTL之间较小的为准,也就是消息5s过期,队列是10s,那么5s的生效。 默认是没有过期时间的,表示消息没有过期时间;如果设置为0,表示消息在投递到消费者的时候直接被消费,否则丢弃。
netkiller Nickname:netkiller | English name: Neo chen | QQ: 291379 | 订阅号:netkiller-ebook | 网站:http://www.netkiller.cn