本文共 2098 字,大约阅读时间需要 6 分钟。
MQ(Message Queue,消息队列)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来链接他们。消息传递指的是程序之间通常在消息中发送数据进行通信,而不是通过直接调用彼此来通信。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ是目前流行的开源消息队列系统,用Erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMOP,直接看RabbitMQ的文档是比较困难的。不过它也只有几个关键概念,这里简单介绍如下:
- Broker:简单来说就是消息队列服务器实体。
- Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。Queue:消息队列载体,每个消息都会被投入到一个或多个队列中。Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来。Routing Key:路由关键字,Exchange根据这个关键字进行消息投递Vhost:虚拟主机,一个Broker里可以开设多个Vhost,用作不同用户的权限分离。Producer:消息生产者,就是投递消息的程序Consumer:消息消费者,就是接受消息的程序Channel:消息通道,在每个客户端的每个连接里,可建立多个Channel,每个Channel代表一个会话任务。
IP地址 主机名 操作系统 用途192.168.5.129 mq01 CentOS 7.4(64位) 磁盘节点192.168.5.128 mq02 CentOS 7.4(64位) 内存节点192.168.5.122 mq03 CentOS 7.4(64位) 内存节点
vim /etc/hostname
删除localname修改为mq01、mq02、mq03vim /etc/hosts192.168.5.129 mq01192.168.5.128 mq02192.168.5.122 mq03
yum install epel-release -y
yum install rabbit-server -y
/usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看有哪些服务/usr/lib/rabbitmq/bin/rabbitmq-pluginns enable rabbitmq_management // 启动管理服务/etc/init.d/rabbitmq-server start //启动rabbitmq服务
在Erlang的集群中,各节点是通过一个magic cookie来实现的,文件是400的全线。所以必须保证各个节点cookie保持一致,否则节点无法通信
systemctl stop rabbitmq.server
cd /var/lib/rabbitmq/ vim .erlang.cookie将其中一台节点的.erlang.cookie值复制下来保存到其他节点上,或者使用scp的方法也可以,但是要注意文件的权限和属主属组。再次启动两个内存节点的rabbitmq服务。并将它们加入到一个集群当中。
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@mq01rabbitmqctl start_app
转载于:https://blog.51cto.com/13620950/2152821