0%

记录-RabbitMq-Install

Pre:

celery+redis 经常会出现重复任务.

所以打算用rabbitmq替换redis.


下载与安装:

erlang:

1
2
# 安装erlang
yum install erlang -y

rabbitmq:

1
2
3
4
5
6
7
# 安装RabbitMQ

# 下载rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

# 安装
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm -y
1
2
3
4
5
# 完成后启动服务:
service rabbitmq-server start

# 可以查看服务状态:
service rabbitmq-server status
1
2
# 激活开机启动命令
systemctl enable rabbitmq-server.service

初始化配置:

创建配置文件:

1
2
3
4
cd /etc/rabbitmq/
vi rabbitmq.config
# 编辑内容如下:
[{rabbit, [{loopback_users, []}]}].

这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

用户设置:

1
2
# 添加用户
rabbitmqctl add_user celery celery
1
2
# 添加虚拟主机
rabbitmqctl add_vhost myvhost
1
2
# 赋予用户权限
rabbitmqctl set_permissions -p myvhost celery ".*" ".*" ".*"

修改celery配置文件:

1
2
CELERY_BROKER_URL = 'amqp://celery:celery@your_ip:5672/myvhost'
CELERY_RESULT_BACKEND = 'amqp://celery:celery@your_ip:5672/myvhost'

修改配置文件后,就可以无缝接入rabbitmq,成功替换掉redis了.


总结:

只能说这个分布式队列的框架设计得特别好,把功能解耦开了,以至于在替换其中一个组件的时候,是如此的方便,无痛.

好的程序设计思想:高内聚,低耦合永不过时.

如果一开始贪快,没有设计好模块间的关系,初期可能感觉关系不大.

但是到了后期要拓展,要debug的时候,才会发现把模块解耦的巨大好处.

所以一开始的模块设计还是要花点心思的.多画画图,没什么坏处.


refs: