Activemq判断队列存活脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activemq判断队列存活脚本相关的知识,希望对你有一定的参考价值。

Activemq是每一位运维工作人员必须掌握的一款软件,他是公司运行的命脉之一,既然如此重要,那么它的看门狗也是比较含金量的。Activemq的看门狗不是像那种# ps -ef|grep mq看进程或者#netstat -ntpl|grep 61613这样直白,因为Activemq还有一种假死情况,那就是“进程和端口都在,但是队列已经死掉了”,遇到这种情况就必须重启当前的activemq。


那么要写出这样的一个脚本,需要满足以下条件:

1)因为mq是集群,有主备之分,首先我们先在主mq上判断当前机器61613端口是否监听;

2)如果当前机器61613端口正常,往mq里添加信息,如果信息可以成功添加到对应的队列里,那么可以证明mq是正常的;

3)如果信息无法添加,那么监听备用mq的61613端口是否监听;

4)如果备用mq的61613端口不在,则发送邮件报警并同时重启主备mq进程;

5)如果备用mq的61613端口正常,则测试备用mq的信息队列是否正常;

6)如果备用mq的信息队列不正常,一样发送邮件报警并同时重启主备mq进程;


以上就是我们mq看门狗脚本的逻辑思路,这里我们用python语言来写,为什么要用python,因为python有一个stomp模块,这个模块是镇服activemq失灵的不二法宝!


首先这个stomp是需要我们手动安装的,他的下载地址是https://github.com/jasonrbriggs/stomp.py,选择"clone or download",然后把整个压缩文件传递到linux服务器里,解压缩之后,在stomp文件夹里使用# python setup.py install,然后就看见如下文字可以证明stomp已经安装成功了:

技术分享


然后我们来写一个简单的测试队列的脚本,脚本内容如下:

[[email protected] ~]# cat mqtest.py 
import time
import sys
import stomp
class MyListener(object):
    def on_error(self, headers, message):
        print(‘received an error %s‘ % message)
    def on_message(self, headers, message):
        print(‘received a message %s‘ % message)
conn = stomp.Connection([(‘mq的内网ip地址‘,61613)])
  
conn.set_listener(‘‘, MyListener())
conn.start()
conn.connect(‘mq的账号‘,‘mq的密码‘)
conn.subscribe(destination=‘/queue/chenshuo‘, id=1, ack=‘auto‘)
conn.send(body=‘hello,this is my test message!‘, destination=‘/queue/chenshuo‘)
time.sleep(2)
conn.disconnect()


在这个脚本里,我们把mq的内网地址作为连接地址,因为这样做很安全,其次我们建立一个叫“chenshuo”的队列,这个队列里传输一个消息,消息的内容就是

hello,this is my test message!

启动一下这个脚本,我们看一下linux端的效果。

技术分享


再看一下web界面:

技术分享

可见已经生成了chenshuo这个队列,而且入列和出列的消息数是3个(因为我之前传递了两个做实验),上面这个脚本是成功的。


但是这个脚本只是一个草样,因为这个消息是没有“消费者”的,没有消费者的话,那么这三个消息就会堆积,而他们的命运要不被删除掉要么就是等待消费者出现把他们消费掉。



(未完待续)

本文出自 “生活就是等待戈多” 博客,请务必保留此出处http://chenx1242.blog.51cto.com/10430133/1884051

以上是关于Activemq判断队列存活脚本的主要内容,如果未能解决你的问题,请参考以下文章

ping判断内网地址是否存活脚本

消息队列ActiveMQ初步

如何在activemq中设置队列监控

web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测

通过ping命令检测主机的存活性

Java消息队列--ActiveMq 初体验