今天简单学习了rabbitmq原因是因为有个同学要做网站的快照,所以进而谈到了对了顺便学习了下rabbitmq准备因为我要用python做个简单的接口所以软件环境如下python环境python2.6zlibzlib-develpensslopenssl-devel,并且要修改yum/usr/bin/yum讲最上方的python路径改成/usr/bin/python2.4这样保证yum可用然后安装pyton2.6这里装到了/usr/local/python2.6然后更新系统pythonln-s/usr/bin/python/usr/local/python2.6/bin/python并且备份原有的python2.因为python调用rabbitmq需要安装pika所以就需要安装pip准备安装setuptools点击bitbutcketrepo去下载一个解压然后安装解压后注意安装其中的ez_install.py就可以安装easy_install了安装好之后去到/usr/local/pyton2.6中看下已经可以了,然后就是安装pip很简单到pip官网上去找个get-pip.py这个东西下载下来然后直接用python运行他就可以安装了这个也会帮你安装setuptoolspip是python的包管理工具类似于nodejs的npm安装好之后就可以安装pika了直接到pip所在的目录运行pippiks==0.9.8python的准备工作做完了安装rabbitmqrabbitmq有几个重要的组建simplejson这个是存储的数据格式需要的库,erlang(一个语言环境必须),amqclient(rabbitmq客户端)我是这样安装的erlang下载所需的源码:wget解压源码:tarxzfotp_src_R13B04.tar.gz进入解压后生产的目录:cdotp_src_R13B04安装前配置:./configure--prefix=/opt/erlang(此条命令下面有修改)make&&makeinstall建立软连ln-s/opt/erlang/bin/erl/usr/bin/erl#seterlangenvironmentexportPATH=$PATH:/opt/erlang/bin至于这两句我觉的没用因为/etc/profile运行了这两句并没有任何增加的内容simplejson安装1.cd/2.wget下载simplejson3.tarzxvfsimplejson-2.4.0.tar.gz解压缩文件4.cdsimplejson-2.4.0,pythonsetup.pyinstall。这是由于simplejson是依赖python脚本以上必须要保证pythonbin目录下有easy_install否则不成功安装rabbitmq到官方去下载或者wget这时候在opt目录会有个rabbitmq_server-2.7.1至于网上从这下面有两部建立目录软连接我觉的没必要按照他们的方式也是建立不成功的忽悠人的我是直接计入/opt/rabbitmq_server-2.7.1目录进行设置的其中rabbitmqctl是停止用的rabbitmq_server是启动用的至此rabbitmq其实已经安装成功了我们使用的是他的默认配置如果项配置大家可以自己查查资料此外有个管理系统rabbitmq是插件形式的所有的应用都是以插件形式介入的这些插件在你安装目录/opt/rabbitmq_server-2.7.1/plugins有个*.ez的文件都是启动管理系统到rabbitmq安装目录./rabbitmq-pluginsenablerabbitmq_management然后启动rabbitmq-server-detached可以实现后台启动我们通过localhost:55672访问管理系统如图管理系统主要是管理队列的列表监控队列的状态等等。我应用官方的python写了个收发程序importpikaconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel=connection.channel()channel.queue_declare(queue='hello')channel.basic_publish(exchange='',routing_key='hello',body='HelloWorld!')print[x]Sent'HelloWorld!'connection.close()存储为send.py在存储一个recievie.py内容如下importpikaconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel=connection.channel()channel.queue_declare(queue='hello')print'[*]Waitingformessages.ToexitpressCTRL+C'defcallback(ch,method,properties,body):print[x]Received%r%(body,)channel.basic_consume(callback,queue='hello',no_ack=True)channel.start_consuming()然后开连个终端一个运行send一个运行recive如下图这只是个简单的处理程序当然还有各种语言的接口,大家可以自己扩展。