php amqp rabbitmq 介绍和使用

  AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不一样产品,不一样的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。服务器

  RabbitMQ,是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。ui

  几个概念说明:spa

Broker:简单来讲就是消息队列服务器实体。
Exchange:消息交换机,它指定消息按什么规则,路由到哪一个队列。
Queue:消息队列载体,每一个消息都会被投入到一个或多个队列。
Binding:绑定,它的做用就是把exchange和queue按照路由规则绑定起来。
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里能够开设多个vhost,用做不一样用户的权限分离。
producer:消息生产者,就是投递消息的程序。
consumer:消息消费者,就是接受消息的程序。
channel:消息通道,在客户端的每一个链接里,可创建多个channel,每一个channel表明一个会话任务。

  消息队列的使用过程大概以下:设计

(1)客户端链接到消息队列服务器,打开一个channel。
(2)客户端声明一个exchange,并设置相关属性。
(3)客户端声明一个queue,并设置相关属性。
(4)客户端使用routing key,在exchange和queue之间创建好绑定关系。
(5)客户端投递消息到exchange。
(6)exchange接收到消息后,将消息投递到一个或多个队列里

  在PHP中,amqp扩展提供了几个类和其中的一系列方法来帮助咱们接受和发送消息code

功能类server

AMQPChannel 一个Connection链接上能够创建多个channel,能够理解为逻辑上的链接
AMQPConnection 指物理的链接,一个client与一个server之间有一个链接
AMQPEnvelope 消息包
AMQPExchange 消息交换机
AMQPQueue 队列中间件

异常类blog

AMQPException
AMQPQueueException
AMQPConnectionException
AMQPChannelException
AMQPExchangeException队列

 

建立链接路由

1 $connection = new AMQPConnection(array(
2     'host' => 'example.host',
3     'vhost' => '/',
4     'port' => 5763,
5     'login' => 'user',
6     'password' => 'password'
7 ));

建立channel

1 $channel = new AMQPChannel($connection);

建立交换机

1 $exchange = new AMQPExchange($channel);
2 $exchange->setName($e_name); 
3 $exchange->setType(AMQP_EX_TYPE_DIRECT); //direct类型 
4 $exchange->setFlags(AMQP_DURABLE); //持久化
相关文章
相关标签/搜索