首页 > 编程语言 >PHP中的AMQP类

PHP中的AMQP类

时间:2023-05-25 16:25:16浏览次数:45  
标签:AMQP 队列 void int PHP public string

PHP中的AMQP类

标签(空格分隔): php,amqp

官网地址:http://docs.php.net/manual/da/book.amqp.php

AMQPConnection

AMQPConnection {
    /* Methods */
    // 与AMQP代理建立连接
    public bool connect ( void )
    // 构造函数 $credentials 可以理解为配置项的数组
    // $config = [
    //    'host' => '127.0.0.1',
    //    'port' => '5672',
    //    'vhost' => '/',
    //    'login' => 'guest',
    //    'password' => 'guest'
    // ];
    public __construct ([ array $credentials = array() ] )
    // 断开连接 返回bool值
    public bool disconnect ( void )
    public bool isConnected ( void )
    public bool reconnect ( void )
    // 这个单独说下:默认值为: '/', 就是虚拟主机
    public bool setVhost ( string $vhost )
    // 下面就是一些Geter、Seter方法了 默认用户就是:guest
    public string getHost ( void )
    public string getLogin ( void )
    public string getPassword ( void )
    public int getPort ( void )
    public string getVhost ( void )
    public bool setHost ( string $host )
    public bool setLogin ( string $login )
    public bool setPassword ( string $password )
    public bool setPort ( int $port )
}



AMQPConnection::connect — 与AMQP代理建立连接。
AMQPConnection::__construct — 创建 AMQPConnection 的实例
AMQPConnection::disconnect — 关闭与AMQP代理的连接。
AMQPConnection::getHost — 获取配置的主机
AMQPConnection::getLogin — 获取配置的登录名
AMQPConnection::getPassword — 获取配置的密码
AMQPConnection::getPort — 获取配置的端口
AMQPConnection::getVhost — 获取配置的虚拟主机
AMQPConnection::isConnected — 确定AMQPConnection对象是否连接到代理。
AMQPConnection::reconnect — 关闭任何打开的连接,并创建一个与AMQP代理的新连接。
AMQPConnection::setHost — 设置 amqp 主机。
AMQPConnection::setLogin — 设置登录名。
AMQPConnection::setPassword — 设置密码。
AMQPConnection::setPort — 设置端口。
AMQPConnection::setVhost — 设置 amqp 虚拟主机

AMQPChannel

为了一个AMQP的链接,创建一个channel instance(通道实例)

AMQPChannel {
    /* Metoder */
    public void commitTransaction ( void )
    __construct ( AMQPConnection $amqp_connection )
    public void isConnected ( void )
    // 不知道具体干啥用的
    public void qos ( int $size , int $count )
    public void rollbackTransaction ( void )
    // 这个参数设置,接收的最大消息数量
    public void setPrefetchCount ( int $count )
    public void setPrefetchSize ( int $size )
    public void startTransaction ( void )
}

AMQPChannel::commitTransaction — 提交挂起的事务
AMQPChannel::__construct — 创建 AMQPChannel 对象的实例
AMQPChannel::isConnected — 检查信道连接
AMQPChannel::qos — 为给定通道设置服务质量设置
AMQPChannel::rollbackTransaction — 回滚事务
AMQPChannel::setPrefetchCount — 设置要从代理预取的消息数
AMQPChannel::setPrefetchSize — 设置窗口大小以从代理预取
AMQPChannel::startTransaction — 启动事务

AMQPExchange

交换机
AMQPExchange {
    /* Methods */
    // 交换机绑定队列
    public bool bind ( string $destination_exchange_name , string $source_exchange_name , string $routing_key )
    public __construct ( AMQPChannel $amqp_channel )
    public int declare ( void )
    public bool delete ([ int $flags = AMQP_NOPARAM ] )
    public mixed getArgument ( string $key )
    public array getArguments ( void )
    public int getFlags ( void )
    public string getName ( void )
    public string getType ( void )
    // 发送消息
    public bool publish ( string $message , string $routing_key [, int $flags = AMQP_NOPARAM [, array $attributes = array() ]] )
    
    public void setArgument ( string $key , mixed $value )
    public void setArguments ( array $arguments )
    // AMQP_DURABLE, AMQP_PASSIVE 
    // (and AMQP_DURABLE, if librabbitmq version >= 0.5.3)
    public void setFlags ( int $flags )
    // 设置交换机名称:最好使用数字、字母、- _ .   
    // 组合(区分大小写,但最好使用小写)
    // 也不要使用amq带头(内置的exchange都是使用amq.开头)
    // 如果申明一个已存在的exchange name,如果type不一致会抛出异常
    public void setName ( string $exchange_name )
    // 目前四种模式:AMQP_EX_TYPE_DIRECT,
    // AMQP_EX_TYPE_FANOUT, AMQP_EX_TYPE_HEADERS, AMQP_EX_TYPE_TOPIC
    public string setType ( string $exchange_type )
}

setFlags含义:
1. passive:声明一个已存在的交换器的,如果不存在将抛出异常,这个一般用在consume端。因为一般produce端创建,在consume端建议设置成AMQP_PASSIVE,防止consume创建exchange
2. durable:持久exchange,该交换器将在broker重启后生效,一般常使用该选项.
3. auto_delete:该交换器将在没有消息队列绑定时自动删除。一个从未绑定任何队列的交换器不会自动删除。解释有点绕。说明下吧,当有队列bind到auto_delete的交换器上之后,删除该队列。此时交换器也会删除。一般创建为临时交换器。



AMQPExchange::bind — 绑定到另一个交换机
AMQPExchange::__construct — 创建 AMQPExchange 的实例
AMQPExchange::declare — 声明一个新的交换机。
AMQPExchange::delete — 删除交换机。
AMQPExchange::getArgument — 获取与给定键关联的参数
AMQPExchange::getArguments — 获取给定交换机上设置的所有参数
AMQPExchange::getFlags — 获取标志位掩码
AMQPExchange::getName — 获取配置的名称
AMQPExchange::getType — 获取配置的类型
AMQPExchange::publish — 向交换机发布消息。
AMQPExchange::setArgument — 设置给定键的值
AMQPExchange::setArguments — 设置交换机上的所有参数
AMQPExchange::setFlags — 在交换机设置标志
AMQPExchange::setName — 设置交换机的名称
AMQPExchange::setType — 设置交换机所的类型

AMQPQueue

队列

AMQPQueue {
    /* Metoder */
    // 手动确认
    public bool ack ( int $delivery_tag [, int $flags = AMQP_NOPARAM ] )
    // 与交换机绑定
    public bool bind ( string $exchange_name , string $routing_key )
    // 取消
    public bool cancel ([ string $consumer_tag = "" ] )
    // 实例化 
    public __construct ( AMQPConnection $amqp_connection )
    // 消费数据
    public void consume ( callable $callback [, int $flags = AMQP_NOPARAM ] )
    // 声明队列
    public int declare ( void )
    // 删除队列
    publicbool delete ( void )
    // 非阻塞获取数据
    public mixed get ([ int $flags ] )
    public mixed getArgument ( string $key )
    public array getArguments ( void )
    public int getFlags ( void )
    public string getName ( void )
    // 用法ack相反,表示not ack.
    public void nack ( string $delivery_tag [, string $flags = AMQP_NOPARAM ] )
    public bool purge ( void )
    public void setArgument ( string $key , mixed $value )
    public void setArguments ( array $arguments )
    // AMQP_DURABLE, AMQP_PASSIVE,
    // AMQP_EXCLUSIVE, AMQP_AUTODELETE.
    public void setFlags ( int $flags )
    // 设置队列名称
    public void setName ( string $queue_name )
    public bool unbind ( string $exchange_name , string $routing_key )
}

::setFlags ( int $flags )
可选参数:AMQP_DURABLE, AMQP_PASSIVE,AMQP_EXCLUSIVE, AMQP_AUTODELETE
默认:auto_delete

1. auto_delete:当队列中有消费者,则队列存在,当没有消费者链接,则队列删除
2. durable:持久化,队列不删除,注意仅仅是队列持久,消息不持久(消息的持久在publish时的增加属性delivery_mode=2)。消费的消息,从队列里删除,未消费的消息保存在队列中,不需要关注是否有消费者。最实用
3. passive:声明一个1个已存在的队列。意义不大,如果队列不存在会抛出异常。
4. exclusive:排他队列,如果一个队列被声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除


AMQPQueue::ack — 确认收到消息
AMQPQueue::bind — 将给定队列绑定到交易所上的路由密钥。
AMQPQueue::cancel — 取消队列绑定。
AMQPQueue::__construct — 创建 AMQPQueue 对象的实例
AMQPQueue::consume — 使用队列中的消息
AMQPQueue::declare — 声明一个新队列
AMQPQueue::delete — 删除队列及其内容。
AMQPQueue::get — 从队列中检索下一条消息。
AMQPQueue::getArgument — 获取与给定键关联的参数
AMQPQueue::getArguments — 获取给定队列上设置的所有参数
AMQPQueue::getFlags — 获取标志位掩码
AMQPQueue::getName — 获取配置的名称
AMQPQueue::nack — 将消息标记为显式未确认。
AMQPQueue::purge — 清除队列的内容
AMQPQueue::setArgument — 设置给定键的值
AMQPQueue::setArguments — 设置队列上的所有参数
AMQPQueue::setFlags — 设置队列标志
AMQPQueue::setName — 设置队列名称

AMQPEnvelope

AMQPEnvelope {
    /* Metoder */
    public string getAppId ( void )
    public string getBody ( void )
    public string getContentEncoding ( void )
    public string getContentType ( void )
    public string getCorrelationId ( void )
    public string getDeliveryTag ( void )
    public string getExchange ( void )
    public string getExpiration ( void )
    public string getHeader ( string $header_key )
    public array getHeaders ( void )
    public string getMessageId ( void )
    public string getPriority ( void )
    public string getReplyTo ( void )
    public string getRoutingKey ( void )
    public string getTimeStamp ( void )
    public string getType ( void )
    public string getUserId ( void )
    public bool isRedelivery ( void )
}


AMQPEnvelope::getAppId — 获取消息 appid
AMQPEnvelope::getBody — 获取消息正文
AMQPEnvelope::getContentEncoding — 获取消息内容编码
AMQPEnvelope::getContentType — 获取消息内容类型
AMQPEnvelope::getCorrelationId — 获取消息关联 ID
AMQPEnvelope::getDeliveryTag — 获取消息传递标记
AMQPEnvelope::getExchange — 获取消息交换
AMQPEnvelope::getExpiration — 获取消息过期
AMQPEnvelope::getHeader — 获取特定的消息标头
AMQPEnvelope::getHeaders — 获取消息标头
AMQPEnvelope::getMessageId — 获取消息 ID
AMQPEnvelope::getPriority — 获取消息优先级
AMQPEnvelope::getReplyTo — 获取消息回复
AMQPEnvelope::getRoutingKey — 获取消息路由密钥
AMQPEnvelope::getTimeStamp — 获取消息时间戳
AMQPEnvelope::getType — 获取消息类型
AMQPEnvelope::getUserId — 获取消息用户 ID
AMQPEnvelope::isRedelivery — 这是否是消息的重新传递

// 命令行打印的结果
class AMQPEnvelope#4 (20) {
  private $content_type =>
  string(10) "text/plain"
  private $content_encoding =>
  string(0) ""
  private $headers =>
  array(0) {
  }
  private $delivery_mode =>
  int(2)
  private $priority =>
  int(0)
  private $correlation_id =>
  string(0) ""
  private $reply_to =>
  string(0) ""
  private $expiration =>
  string(0) ""
  private $message_id =>
  string(0) ""
  private $timestamp =>
  int(0)
  private $type =>
  string(0) ""
  private $user_id =>
  string(0) ""
  private $app_id =>
  string(0) ""
  private $cluster_id =>
  string(0) ""
  private $body =>
  string(12) "HELLO WORLD1"
  private $consumer_tag =>
  string(31) "amq.ctag-lE1EkfMpX0jyB5mThY1Tjg"
  private $delivery_tag =>
  int(2)
  private $is_redelivery =>
  bool(false)
  private $exchange_name =>
  string(11) "exchange_02"
  private $routing_key =>
  string(8) "queue_02"
}

标签:AMQP,队列,void,int,PHP,public,string
From: https://www.cnblogs.com/yanweifeng/p/17431677.html

相关文章

  • PHP操作RabbitQM
    PHP操作RabbitQM标签(空格分隔):amqp,phpFanoutExchange多个queue都可以绑定到exchange,并且每个queue都会接受到消息producer(client.php)$exchangeName="exchange_01";try{$connection=newAMQPConnection();$connection->setHost('127.0.0.1');$......
  • Linux系统,使用PHP连接ORACLE数据库
    首先安装ORACLE的InstantClient环境:在这里下载因为我需要连接11.2.0.4.0版本的ORACLE数据库,所以选取下载了basic-11.2.0.4.0-1.x86_64.rpm和devel-11.2.0.4.0-1.x86_64.rpm,使用如下命令安装:rpm-ivhoracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpmrpm-ivhoracle......
  • 宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
    宝塔面板登录phpMyAdmin提示服务器和客户端上指示的HTTPS之间不匹配https://www.niuqi360.com/btpanel/mismatch-between-https-indicated-on-server-and-client/......
  • kafka.php
    setRebalanceCb(function(RdKafka\KafkaConsumer$kafka,$err,array$partitions=null){switch($err){caseRD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS://echo"Assign:";//var_dump($partitions);......
  • es.php
    setHosts(['192.168.133.131'])->build(); //如果es设置了密码 //$es=\Elasticsearch\ClientBuilder::create()->setHosts(['http://username:[email protected]:9200'])->build() return$es;}functiongetIndicesSetting(){ $......
  • mongo.php
    "root",'password'=>"123456",'db'=>"admin"]);return$manager;}functionmongoQuery($manager){//查询$filter=['age'=>['$gt'=>5]......
  • 打一个适合自己主机的nginx和php的包
    创建适配主机的nginx和php的包##先m01上配置一遍wordpress#安装nginx,php包#官方源安装vim/etc/yum.repos.d/nginx.repo[nginx-stable]name=nginxstablerepobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://ng......
  • php中日期时间字符串可以直接比较大小
    php中的日期时间字符串可以直接比较大小很多朋友还不知道,一直使用strtotime转换字符串为时间戳再比较大小。$time1='09:00';$time2='12:51';$time3='22:00';self::assertTrue($time2>$time1);self::assertTrue($time2<$time3);$date1='2021-02-03';$......
  • php实现占位符模板替换
    php实现占位符模板替换对接过微信模板消息,或者阿里大于接口的,应该都知道,三方会给你一些模板,模板里有一些占位符,你只需要按照模板里的占位符填充参数即可。demo,实现一个地址跳转系统用户提供域名和路径参数,系统配置模板即可,用户传参即可替换。//用户提供的参数$patterns='u......
  • [PHP](MD5、sha1)比较漏洞-笔记
    PhP(MD5、sha1)比较漏洞(弱比较、强比较、强碰撞)弱比较md5和sha1弱比较都是利用php解析哈希值以“0E”开头的特性,结果都为0符合参数1的字符串值和参数2的字符串值不相等,但md5值相等。如:240610708,aabg7XSs,aabC9RqS,s878926199a这四段字符串MD5编码后结果分别对应240610708:0E462097......