rabbitmq笔记1

  最近在弄openstack,里面普遍用消息队列作为服务内部的通信,ceilometer则是openstack中最大的消费者,但本人对消息队列却一窍不通,实在惭愧,打算拜读一下相关的书籍,摘掉小白的帽子,挑中一本RabbitMQ实战 高效部署分布式消息队列,就是下面这个铲屎工。
hello world

  好不容易看到第二章,发现书上开始贴代码来讲述了,身为码农,当然也得跟着敲几下,但是敲这个代码得装个rabbitmq,看了几个教程发现这个安装rabbitmq似乎不是那么的轻松,最后还是自己摸索一番,看着官网的教程https://www.rabbitmq.com/install-rpm.html来怼。

失败的尝试

  官网的教程介绍了好几种方法,我英文不好,看不太懂,就挑个最短的来照办,叫做EPEL安装,我用的是centos6.6,按着http://fedoraproject.org/wiki/EPEL/FAQ#howtouse说的,敲入如下命令(输出省略):

1
2
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install erlang

顺利安装完Erlang,然后继续安装rabbitmq server:

1
yum install rabbitmq-server-3.6.6-1.noarch.rpm

顺利报错:

1
2
3
4
5
6
Error: Package: rabbitmq-server-3.6.6-1.el6.noarch (/rabbitmq-server-3.6.6-1.el6.noarch)
Requires: erlang >= R16B-03
Installed: erlang-R14B-04.3.el6.x86_64 (@epel)
erlang = R14B-04.3.el6
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

大意就是说Erlang版本太低了,换个新的吧!

  然后试一下zero dependency Erlang RPM package for running RabbitMQ这个,但是看到README里有这么一句话:

The package currently targets Erlang/OTP 19.0.x,19.1.x and 19.2.x. Only 64-bit packages are provided.

似乎是说只支持64-bit的。

成功的尝试

Erlang安装

  因为在百度出来的教程似乎都比较复杂(这也是我第一次尝试用了EPEL的方式,因为看起来简单),而Erlang的教程出乎意料的简单,执行几个命令就行了:

1
2
3
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install erlang

一切顺利。

RabbitMQ安装

  这个也是几个命令的事:

1
2
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.6.6-1.noarch.rpm

  用python写rabbitmq的代码要用pika这个库,继续安装pika:

1
2
wget https://pypi.python.org/packages/ee/25/1517ce612d7cd0a426ea027275ba74165bbfd86a2daf4bce4839afac3deb/pika-0.10.0.tar.gz#md5=db5025bc5abfb0f78573616ee846df31
python setup.py install

两个demo

  一切准备就绪,就开始贴代码运行了,先运行一个rabbitmq官网的hello world demo,代码就不贴出来了,上个效果图:
hello world

再来一个RabbitMQ实战 2.6章节的demo:
hello world

  好了,现在rabbitmq的环境搭起来了,其他的章节以后再慢慢看吧。

帮助贫困儿童,人人有责