使用 RabbitMQ

安装与配置

RabbitMQ 是默认的中间人,所以除了需要你要使用的中间人实例的 URL 位置, 它并不需要任何额外的依赖或起始配置:

  1. >>> BROKER_URL = 'amqp://guest:[email protected]:5672//'

Celery 中间人 URL 的描述和完整的中间人可用配置选项列表见 Broker Settings

安装 RabbitMQ 服务器

见 RabbitMQ 网站上的 安装 RabbitMQ 。Mac OS X 用户 ,则请见 在 OS X 上安装 RabbitMQ

注解

如果你在安装和使用 rabbitmqctl 后遇到了 nodedown 错 误,那么这篇文章可以帮助你找到错误的来源:

http://somic.org/2009/02/19/on-rabbitmqctl-and-badrpcnodedown/

设置 RabbitMQ

要使用 Celery,我们需要创建一个 RabbitMQ 用户、一个虚拟主机,并且 允许这个用户访问这个虚拟主机:

  1. $ sudo rabbitmqctl add_user myuser mypassword
  1. $ sudo rabbitmqctl add_vhost myvhost
  1. $ sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

关于 访问控制 的更多信息见 RabbitMQ 的 管理员指南

在 OS X 上安装 RabbitMQ

在 Snow Leopard 上安装 RabbitMQ 最简单的方式就是 Homebrew ——OS X 上的一款 新颖别致,光彩动人的包管理系统。

在本例中,我们将把 Homebrew 安装到 /lol ,但你可以选择任意位置, 如果你想,甚至可以是你的用户根目录,Homebrew 的强大之处之一就是可以重定址。

Homebrew 实际上是一个 git 仓库,所以要安装 Homebrew,你首先需要安装 git。 从 http://code.google.com/p/git-osx-installer/downloads/list?can=3 下载并安装 磁盘映像。

当安装好 git 后,你终于可以克隆这个仓库到 /lol :

  1. $ git clone git://github.com/mxcl/homebrew /lol

Brew 包含一个简单的工具称为 brew ,用于安装、移除和查询包。为了使 用它,你需要先把它添加到 PATH 中。可以把下面的这行添加到你的 ~/.profile 末尾来实现:

  1. export PATH="/lol/bin:/lol/sbin:$PATH"

保存并重新加载:

  1. $ source ~/.profile

你终于可以用 brew 安装 RabbitMQ 了:

  1. $ brew install rabbitmq

配置系统的主机名

如果你使用了 DHCP 服务器,它会给你分配一个随机的主机名,那么你需要设置一个永久 的主机名。这是因为 RabbitMQ 通过主机名来与节点通信。

使用 scutil 命令来永久修改主机名:

  1. $ sudo scutil --set HostName myhost.local

然后把主机名加入到 /etc/hosts 中,这样才能解析到 IP 地址:

  1. 127.0.0.1 localhost myhost myhost.local

如果你启用了 RabbitMQ 服务器,你的 Rabbit 节点现在应被 rabbitmqctl 识别为 rabbit@myhost 。

  1. $ sudo rabbitmqctl status
  2. Status of node [email protected] ...
  3. [{running_applications,[{rabbit,"RabbitMQ","1.7.1"},
  4. {mnesia,"MNESIA CXC 138 12","4.4.12"},
  5. {os_mon,"CPO CXC 138 46","2.2.4"},
  6. {sasl,"SASL CXC 138 11","2.1.8"},
  7. {stdlib,"ERTS CXC 138 10","1.16.4"},
  8. {kernel,"ERTS CXC 138 10","2.13.4"}]},
  9. {nodes,[[email protected]]},
  10. {running_nodes,[[email protected]]}]
  11. ...done.

如果你的 DHCP 分配的主机名以 IP 地址开头这就尤其重要(例如 23.10.112.31.comcast.net ),因为 RabbitMQ 会试图访问 rabbit@23 , 而这是一个非法的主机名。

启动/停止 RabbitMQ 服务器

启动服务器:

  1. $ sudo rabbitmq-server

你也可以添加 -detached 属性来让它在后台运行(注意:只有一 个破折号):

  1. $ sudo rabbitmq-server -detached

永远不要用 kill 停止 RabbitMQ 服务器,而是应该用 rabbitmqctl 命令:

  1. $ sudo rabbitmqctl stop

当服务器正常运行后,你可以继续阅读 When the server is running, you can continue reading 设置 RabbitMQ