首先说明一下,本人玩这个东西还不到两天,只是试验性的用了一下,不过感觉上还不错。
rabbitmq是什么?
简单来说,它就是一个消息队列。我们可以用一个程序扔消息进去,然后可以在另一个程序获取这个消息。
为何使用rabbitmq而不是用redis?
这个问题是一开始选择使用rabbitmq的时候的一个纠结的地方,因为消息队列,redis的队列也可以实现。让我决定使用rabbitmq的原因在于几个点。
1. rabbitmq有一种应答机制,客户端在接收到消息后要主动回应,消息才算处理了,不然下次重新获取信息还会获取回来。而redis用pop获取信息后,信息就没了。
2. 持久化,重启服务消息还在。(当然redis也可以持久化)
3. 灵活的接收机制,多种接收模式。
安装和简单的命令
参考的网址:
https://www.erlang-solutions.com/resources/download.html
https://packagecloud.io/rabbitmq/rabbitmq-server/install
https://github.com/rabbitmq/chef-cookbook/issues/189#issuecomment-69878404
我是用docker,镜像是centos7测试的。
第一步,安装erlang
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
yum install epel-release
第二部,安装rabbitmq
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | /bin/bash
yum install rabbitmq-server
启动rabbitmq
rabbitmq-server start
停止rabbitmq
rabbitmqctl stop
列出rabbitmq的插件
rabbitmq-plugins list -v
启动一个插件(以rabbitmq的web版管理插件为例,启动后可以通过http://127.0.0.1:15672访问管理,添加插件要重启rabbitmq)
rabbitmq-plugins enable rabbitmq_management
注意web版管理界面默认使用账号guest和密码guest登陆,但是只允许本地访问,为了远程访问,请在/etc/rabbitmq/rabbitmq.config文件加入[{rabbit, [{loopback_users, []}]}].
并且重启rabbitmq
rabbitmq的一点点理解
有一个生产者源源不断的生成消息扔到rabbitmq,有一个消费者源源不断的从rabbitmq中获取数据。而rabbitmq作为消息的传递者,使用交换器和队列来实现消息传递。交换器负责把消息投递到各个队列,消费者在队列等着消息过来就好。
rabbitmq肯定有更强大的功能,只是本人刚刚接触,没办法挖掘核心部分,不过总的来说业务驱动技术,等有对应的需求再挖掘响应的功能也不迟。