PHP中的AMQP类

2023-07-29,

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"
}

PHP中的AMQP类的相关教程结束。

《PHP中的AMQP类.doc》

下载本文的Word格式文档,以方便收藏与打印。