• php amqp rabbitmq 介绍和使用


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

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

      几个概念说明:

    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扩展提供了几个类和其中的一系列方法来帮助我们接受和发送消息

    功能类

    AMQPChannel 一个Connection连接上可以建立多个channel,可以理解为逻辑上的连接
    AMQPConnection 指物理的连接,一个client与一个server之间有一个连接
    AMQPEnvelope 消息包
    AMQPExchange 消息交换机
    AMQPQueue 队列

    异常类

    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); //持久化
    for remember
  • 相关阅读:
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结 & 实验报告(七)
    第八周课程总结 & 实验报告(六)
    第七周课程总结 & 实验报告(五)
    第六周总结 & 实验报告(四)
    课程总结
    第十四周课程总结&实验报告(简单记事本的实现)
  • 原文地址:https://www.cnblogs.com/dearmrli/p/8646255.html
Copyright © 2020-2023  润新知