RabbitMQ安装与配置

1 RabbitMQ介绍

1.1 简介

RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。

1.2 原理图

这里写图片描述

工作原理深入理解参考地址:
https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html ,
https://www.sojson.com/blog/48.html,
https://www.cnblogs.com/sxzwj/p/6422870.html,
https://blog.csdn.net/seven__________7/article/details/70225830

1.3 相关说明:

1.3.1连接

AMQP连接通常是长连接。AMQP是一个使用TCP提供可靠投递的应用层协议。AMQP使用认证机制并且提供TLS(SSL)保护。当一个应用不再需要连接到AMQP代理的时候,需要优雅的释放掉AMQP连接,而不是直接将TCP连接关闭。

1.3.2通道

有些应用需要与AMQP代理建立多个连接。无论怎样,同时开启多个TCP连接都是不合适的,因为这样做会消耗掉过多的系统资源并且使得防火墙的配置更加困难。AMQP 0-9-1提供了通道(channels)来处理多连接,可以把通道理解成共享一个TCP连接的多个轻量化连接。

在涉及多线程/进程的应用中,为每个线程/进程开启一个通道(channel)是很常见的,并且这些通道不能被线程/进程共享。

一个特定通道上的通讯与其他通道上的通讯是完全隔离的,因此每个AMQP方法都需要携带一个通道号,这样客户端就可以指定此方法是为哪个通道准备的。

1.3.3交互机:

’’ 默认交换机 匿名交换器 未显示声明类型都是该类型
Direct exchange(直连交换机):(Empty string) and amq.direct;直连交换器,该交换机将会对绑定键(binding key)和路由键(routing key)进行精确匹配
Fanout exchange(扇型交换机):amq.fanout;会发送消息到它所知道的所有队列,每个消费者获取的消息都是一致的
Topic exchange(主题交换机): amq.topic;该交换机会对路由键正则匹配,必须是*(一个单词)、#(多个单词,以.分割) 、 user.key .abc.* 类型的key
Headers exchange(头交换机) :amq.match (and amq.headers in RabbitMQ);有时消息的路由操作会涉及到多个属性,此时使用消息头就比用路由键更容易表达,头交换机(headers exchange)就是为此而生的。

1.3.4虚拟主机

为了在一个单独的代理上实现多个隔离的环境(用户、用户组、交换机、队列 等),AMQP提供了一个虚拟主机(virtual hosts - vhosts)的概念。这跟Web servers虚拟主机概念非常相似,这为AMQP实体提供了完全隔离的环境。当连接被建立的时候,AMQP客户端来指定使用哪个虚拟主机。

2 安装

##2.1 安装erlang
安装erlang

# yum install openssl-devel
# yum install unixODBC-devel
#  wget http://www.erlang.org/download/otp_src_R16B01.tar.gz
# tar -zxvf otp_src_R16B01.tar.gz
# cd otp_src_R16B01
# ./configure --prefix=/usr/local/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll  --without-javac
# make 
# make install

配置erlang
vim /etc/profile

export ERLANG_HOME=/opt/rabbitmq/erlang
export PATH=$ERLANG_HOME/bin:$PATH
# source /etc/profile
# erl

这里写图片描述

3安装RabbitMQ服务端

# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.1.5/rabbitmq-server-generic-unix-3.1.5.tar.gz
# tar -zxvf rabbitmq-server-generic-unix-3.1.5.tar.gz

3.1启动

# cd rabbitmq_server-3.1.5/
# ./sbin/rabbitmq-server start
# ./sbin/rabbitmq-server -detached #后台运行

3.2查看状态

# ./sbin/rabbitmqctl status

3.3安装插件(页面管理模块,重启后生效)

# ./sbin/rabbitmq-plugins enable rabbitmq_management

重启rabbitmq服务

# ./sbin/rabbitmqctl stop
# ./sbin/rabbitmq-server start

到此,就可以通过http://ip:15672 使用guest,guest 进行登陆web页面了

3.4用户管理:

官方使用说明文档:
https://www.rabbitmq.com/rabbitmqctl.8.html

RabbitMQ有一个默认的用户"guest",密码也是"guest",这个用户默认只能通过本机访问,eg:http://localhost:15672/,在通过http访问之前记得启用management插件:
list_users,用户列表
add_user {username} {password},添加用户
delete_user {username},删除用户
change_password {username} {newpassword},修改密码
clear_password {username},删除密码,密码删除后就不能访问了。This user now cannot log in with a password (but may be able to through e.g. SASL EXTERNAL if configured)
authenticate_user {username} {password},用户认证
set_user_tags {username} {tag …},为用户设置角色,tag可以是0个、一个、或多个,eg:rabbitmqctl set_user_tags chris administrator,设置为管理员;rabbitmqctl set_user_tags chris,清除chris与角色的关联。

查看用户

# ./sbin/rabbitmqctl list_users

添加用户

# ./sbin/rabbitmqctl add_user clevercode pwd123456

删除用户

# ./sbin/rabbitmqctl delete_user clevercode

修改密码

# ./sbin/rabbitmqctl change_password clevercode pwd12345678

设置标签(management,monitoring,administrator)

#./sbin/rabbitmqctl set_user_tags clevercode administrator 

然后就可以通过http://host:15672 登录management界面管理rabbitmq了,但此时用户clevercode还没有访问队列资源的权限

3.5权限管理:

RabbitMQ客户端连接到一个服务端的时候,在它的操作指令中指定了一个虚拟主机。服务端首先检查是否有访问该虚拟主机的权限,没有权限的会拒绝连接。

对于exchanges和queues等资源,位于某个虚拟主机内;不同虚拟主机内即便名称相同也代表不同的资源。当特定操作在资源上执行时第二级访问控制开始生效。

RabbitMQ在某个资源上区分了配置、写和读操作。配置操作创建或者销毁资源,或者更改资源的行为。写操作将消息注入进资源之中。读操作从资源中获取消息。

要执行特定操作用户必须授予合适的权限。

list_vhosts [vhostinfoitem …],获取vhosts列表
add_vhost {vhost}, eg:rabbitmqctl add_vhost test
delete_vhost {vhost}
set_permissions [-p vhost] {user} {conf} {write} {read},给用户分在对应的vhost上分配相应的权限。eg:rabbitmqctl set_permissions -p /myvhost chris “^chris-." ".” “.*”,这条指令,给用户chris在myvhost分配了权限,权限包括:以"chris-"开头的全部资源的配置权限,和所有资源的读写权限
clear_permissions [-p vhost] {username},清除权限
list_permissions [-p vhost],vhost权限分配列表
list_user_permissions {username},user权限列表

查看主机列表

# ./sbin/rabbitmqctl list_vhosts

添加主机

# ./sbin/rabbitmqctl add_vhost host_clevercode

删除主机

# ./sbin/rabbitmqctl delete_vhost host_clevercode

给用户配置主机权限(此时用户clevercode才有访问host_clevercode空间下面队列资源的权限)

# ./sbin/rabbitmqctl set_permissions -p host_clevercode clevercode ".*" ".*" ".*"

清除权限

# ./sbin/rabbitmqctl clear_permissions -p host_clevercode clevercode

vhost权限分配列表

# ./sbin/rabbitmqctl list_permissions -p host_clevercode

user权限列表

# ./sbin/rabbitmqctl list_user_permissions clevercode

4安装客户端

4.1安装

# wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.6.0/rabbitmq-c-0.6.0.tar.gz
# tar -zxvf rabbitmq-c-0.6.0.tar.gz
# cd rabbitmq-c-0.6.0
# ./configure
# make && make install

4.2 测试

1 开启消费者(终端1)

# ./examples/amqp_listen localhost 5672 amq.direct test

这里写图片描述

开启消费者(再开一个终端)

# ./examples/amqp_listen localhost 5672 amq.direct test2

查看管理页面(会有两个连接,查看队列,会看到test2)
这里写图片描述

这里写图片描述

2 生成者(再开一个终端)

#./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
#./examples/amqp_sendstring localhost 5672 amq.direct test "hello world"
#./examples/amqp_sendstring 127.0.0.1 5672 amq.direct test2 "hello world2"

查看消费者中的页面
这里写图片描述

5 安装PHP扩展

# wget http://pecl.php.net/get/amqp-1.6.0beta3.tgz
# tar -zxvf  amqp-1.6.0beta3.tgz
# cd amqp-1.6.0beta3/
# phpize
# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-amqp
# make
# make install

注意,如果make install时候,提示了以下文案,不是安装失败,而是,你提示你需要配置/etc/php.ini,将amqp.so扩展加入进来。
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/

加入amqp.so扩展模块。

#  vim /etc/php.ini  

修改 php.ini 文件 在最后加入 如下内容:
extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/”
[amqp]
extension=amqp.so

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装配置RabbitMQ在CentOS上可以按照以下步骤进行: 1. 安装Erlang:首先通过执行命令sudo yum install erlang来安装Erlang。 2. 下载并安装RabbitMQ:可以通过执行以下命令来下载并安装RabbitMQ:sudo yum install rabbitmq-server。 3. 启动RabbitMQ:可以通过执行以下命令来启动RabbitMQ服务:sudo systemctl start rabbitmq-server。 4. 设置RabbitMQ开机自启动:可以通过执行以下命令来设置RabbitMQ开机自启动:sudo systemctl enable rabbitmq-server。 5. 配置RabbitMQRabbitMQ配置文件位于/etc/rabbitmq/rabbitmq.config。你可以根据需要编辑该文件来配置RabbitMQ。 6. 配置防火墙:如果你启用了防火墙,请确保允许RabbitMQ的相关端口通过防火墙。 7. 配置RabbitMQ Web管理界面:可以通过执行以下命令来启用RabbitMQ Web管理界面:sudo rabbitmq-plugins enable rabbitmq_management。 8. 创建管理用户:可以通过执行以下命令来创建RabbitMQ管理用户:sudo rabbitmqctl add_user <用户名> <密码>。 9. 授予管理员角色:可以通过执行以下命令来授予管理员角色给RabbitMQ管理用户:sudo rabbitmqctl set_user_tags <用户名> administrator。 这些步骤可以帮助你在CentOS上安装配置RabbitMQ。请确保按照指示操作,并根据实际需要进行适当的配置。保持系统安全性,确保只给予必要的权限。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [centos7篇---安装 rabbitmq详细教程](https://blog.csdn.net/m0_46825740/article/details/126126849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [CentOS下RabbitMq安装与集群实例](https://download.csdn.net/download/lengfeng521015/10245309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值