目录
消息中间件
介绍RabbitMQ
什么是消息队列
RabbitMQ单机部署
消息中间件
消息中间件也成为消息队列,指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
当下主流的中间件有:
RabbitMQ、Kafka、ActiveMQ、RocketMQ等
消息中间件的优点:
能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发,是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题。
消息中间件的作用:
解耦,冗余,扩展性,削峰,可恢复性,顺序保证,缓冲,异步通信。
介绍RabbitMQ
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
什么是消息队列
MQ 全称为Message Queue, 消息队列。是一种应用程序对应用程序的通信方法。
应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ单机部署
消息中间件也成为消息队列,指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
当下主流的中间件有:
RabbitMQ、Kafka、ActiveMQ、RocketMQ等
消息中间件的优点:
能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发,是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题。
消息中间件的作用:
解耦,冗余,扩展性,削峰,可恢复性,顺序保证,缓冲,异步通信。
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
什么是消息队列
MQ 全称为Message Queue, 消息队列。是一种应用程序对应用程序的通信方法。
应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ单机部署
MQ 全称为Message Queue, 消息队列。是一种应用程序对应用程序的通信方法。
应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
查看erlang和rabbitmq版本对应关系:RabbitMQ Erlang Version Requirements — RabbitMQ
编译安装erlang
安装erlang的依赖包 [root@rabbit ~]# yum install -y *epel* gcc-c++ unixODBC unixODBC-devel openssl-devel ncurses-devel [root@rabbit src]# wget http://erlang.org/download/otp_src_21.3.tar.gz [root@rabbit src]# tar -zxvf otp_src_21.3.tar.gz -C /usr/local/ [root@rabbit ~]# cd otp_src_21.3 [root@rabbit otp_src_21.3]# ./configure --prefix=/usr/local/bin/erlang --without-javac [root@rabbit otp_src_21.3]# make && make install [root@rabbit ~]# vim /etc/profile.d/erlang.sh ERLANG_HOME=/usr/local/bin/erlang PATH=$PATH:$ERLANG_HOME/bin export ERLANG_HOME PATH [root@rabbit ~]# source /etc/profile.d/erlang.sh #有命令 “erl” ,即安装 erlang 成功
编译安装Rabbitmq
[root@rabbit src]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.14/rabbitmq-server-generic-unix-3.7.14.tar.xz
[root@rabbit src]# xz -d rabbitmq-server-generic-unix-3.7.14.tar.xz
[root@rabbit src]# tar xvf rabbitmq-server-generic-unix-3.7.14.tar -C /usr/local/
[root@rabbit ~]# vim /etc/profile.d/rabbit.sh
RABB_HOME=/usr/local/rabbitmq_server-3.7.14
PATH=$PATH:$RABB_HOME/sbin
export RABB_HOME PATH
[root@rabbit ~]# source /etc/profile.d/rabbit.sh
启动rabbitMQ web界面:
[root@rabbit ~]# rabbitmq-plugins enable rabbitmq_management
启动rabbitMQ:
[root@rabbit ~]#rabbitmq-server -detached
[root@rabbit ~]# ss -tunlp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=935,fd=3))
tcp LISTEN 0 128 *:15672 *:* users:(("beam.smp",pid=38881,fd=76))
tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1088,fd=13))
tcp LISTEN 0 128 *:25672 *:* users:(("beam.smp",pid=38881,fd=65))
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=62188,fd=6),("nginx",pid=62186,fd=6))
tcp LISTEN 0 128 *:4369 *:* users:(("epmd",pid=38461,fd=3))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=935,fd=4))
tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=1088,fd=14))
tcp LISTEN 0 128 [::]:5672 [::]:* users:(("beam.smp",pid=38881,fd=75))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=62188,fd=7),("nginx",pid=62186,fd=7))
tcp LISTEN 0 128 [::]:4369 [::]:* users:(("epmd",pid=38461,fd=4))
#查看当前的rabbit用户
[root@rabbit ~]# rabbitmqctl list_users
Listing users ...
user tags
guest [administrator] #当前用户只有guest,只能本地登入,无法远程访问。
#添加用户和密码
[root@rabbit ~]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
#添加用户的配置、读写全部权限
[root@rabbit ~]# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...
#把用户分配asministrator角色
[root@rabbit ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
测试:
在浏览器上输入: http://ip:15672
登入页面:



