RabbitMQ消息队列在PHP下的应用

本文介绍了RabbitMQ在PHP项目中的应用,重点讨论了binding key和routing key的区别,以及它们在Direct、Topic和Fanout模式下的作用。此外,还提到了消息的持久化设置和流控机制,确保在消息生产速度大于处理速度时的稳定性。最后,概述了RabbitMQ在PHP环境中的安装和配置过程,并提供了PHP server端和客户端脚本的使用示例。
摘要由CSDN通过智能技术生成

消息队列的实现中,RabbitMQ以其健壮和可靠见长.公司的项目中选择了它作为消息队列的实现.关于MQ的机制和原理网上有很多文章可以看,这里就不再赘述,只讲几个比较容易混淆的问题

1,binding key和routing key

  binding key和routing key是都不过是自己设置的一组字符,只是用的地方不同,binding key是在绑定交换机和队列时候通过方法传递的字符串,routing key是在发布消息时候,顺便带上的字符串,有些人说这两个其实是一个东西,也对也不对,说对,是因为这两个可以完全一样,说不对,是因为这两个起的作用不同,一个交换机可以绑定很多队列,但是每个队列也许需要的消息类型不同,binding key就是这个绑定时候留在交换机和队列之间的提示信息,当消息发送出来后,随着消息一起发送的routing key如果和binding key一样就说明消息是这个队列要的东西,如果不一样那就不要给这个队列,交换机你找找下个队列看看要不要.明白了吧,这两个key就是暗号,对上了就是自己人,对不上那麻烦你再找找去.

  binding key和routing key的配对其实也不是就要完全一样,还可以'相似'配对,建立交换机的时候,就要告诉MQ,我要声明的这个交换机和它上面的队列之间传输消息时候要求routing key和binding key完全一样,这种模式叫Direct,如果routing key和binding key可以'模糊'匹配,这种模式叫Topic,如果不需要匹配,尽管发,叫Fanout.

2,持久化

  交换机和队列都可以在创建时候设置为持久化,重启以后会回复,但是其中的消息未不会,如果要消息也恢复,将消息发布到交换机的时候,可以指定一个标志“Delivery Mode”(投递模式),  1为非持久化,2为持久化.

3,流控机制

  当消息生产的速度更快,而进程的处理能力低时,消息就会堆积起来,占用内存越来越多,导致MQ崩溃,所以rabbitmq有一个流控机制,当超过限定时候就会阻止接受消息,mq流控有三种机制

       1,主动阻塞住发消息太快的连接,这个无法调整,如果被阻塞了,在abbitmqctl 控制台上会显示一个blocked的状态。
       2,内存超过限量,会阻塞连接,在vm_memory_high_watermark可调
       3,剩余磁盘在限定以下mq会 主动阻塞所有的生产者,默认为50m,在disk_free_limit可调.
 
下面是在centos7上面的,MQ安装过程.
  
1,必要的支持
yum install ncurses-devel   unixODBC unixODBC-devel  

 

2,erlang环境
wget http://www.erlang.org/download/ otp_src_17.3.tar.gz
tar zxvf otp_src_17.3.tar.gz
cd otp_src_17.3 
./configure --without-javac
#忽略警告
make && make install

3,安装rabbitmq依赖文件,安装rabbitmq

复制代码
yum install xmlto
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.1/rabbitmq-server-3.4.1.tar.gz
tar zxvf rabbitmq-server-3.4.1.tar.gz
cd rabbitmq-server-3.4.1/
make TARGET_DIR=/usr/rabbitmq SBIN_DIR=/usr/rabbitmq/sbin MAN_DIR=/usr/rabbitmq/man DOC_INSTALL_DIR=/usr/rabbitmq/doc
make TARGET_DIR=/usr/rabbitmq SBIN_DIR=/usr/rabbitmq/sbin MAN_DIR=/usr/rabbitmq/man DOC_INSTALL_DIR=/usr/rabbitmq/doc  install
/usr/rabbitmq/sbin/rabbitmq-server -detached 启动rabbitmq
/usr/rabbitmq/sbin/rabbitmqctl status 查看状态
/usr/rabbitmq/sbin/rabbitmqctl stop 关闭rabbitmq
复制代码

4,启用管理插件

复制代码
mkdir /etc/rabbitmq
cd  /usr/rabbitmq/sbin
./rabbitmq-plugins enable rabbitmq_management  (启用插件)
./rabbitmq-plugins disable rabbitmq_management (禁用插件)
# 重启rabbitmq
# 访问 http://127.0.0.1:15672/
# 如果有iptables
# vi /etc/sysconfig/iptables  增加
#    -A INPUT -m state --state NEW -m tcp -p tc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值