关于下面全部 $ticket 参数变量的说明:一个已经被遗弃的参数用来向前兼容的参数 $ticket 参数变量的说明链接.
exchange_declare
试探性申请一个交换器,若该交换器不存在,则创建;若存在,则跳过。
/**
* Declares exchange
*
* @param string $exchange
* @param string $type
* @param bool $passive
* @param bool $durable
* @param bool $auto_delete
* @param bool $internal
* @param bool $nowait
* @param AMQPTable|array $arguments
* @param int|null $ticket
* @throws \PhpAmqpLib\Exception\AMQPTimeoutException if the specified operation timeout was exceeded
* @return mixed|null
*/
public function exchange_declare(
$exchange,
$type,
$passive = false,
$durable = false,
$auto_delete = true,
$internal = false,
$nowait = false,
$arguments = array(),
$ticket = null
)
参数名 | 解释 |
---|---|
exchange | 交换器名称 |
type | 交换器类型,常见的如fanout、direct、topic、headers四种。 |
passive | 只判断不创建(一般用于判断该交换机是否存在),如果你希望查询交换机是否存在.而又不想在查询时创建这个交换机.设置此为true即可如果交换机不存在,则会抛出一个错误的异常.如果存在则返回NULL。称 |
durable | 设置是否持久化。设置true表示持久化,反之非持久化。持久化可以将交换器存盘,在服务器重启的时候不会丢失相关信息。 |
auto_delete | 设置是否自动删除。设置true表示自动删除。自动删除的前提:至少有一个队列或交换器与这个交换器绑定,之后所有与这个交换器绑定的队列或交换器都与此解绑。不要错误的理解:“当与此交换器连接的客户端都断开时,RabbitMQ会自动删除本交换器”。 |
internal | 设置是否是内置的。设置true表示是内置的交换器,客户端程序无法直接发送消息到这个交换器中,只能通过交换器路由到交换器这个方式。 |
nowait | 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。 |
arguments | 其他一些结构化参数 |
ticket |
basic_publish
生产消息
/**
* Publishes a message
*
* @param AMQPMessage $msg
* @param string $exchange
* @param string $routing_key
* @param bool $mandatory
* @param bool $immediate
* @param int|null $ticket
* @throws AMQPChannelClosedException
* @throws AMQPConnectionClosedException
* @throws AMQPConnectionBlockedException
*/
public function basic_publish(
$msg,
$exchange = '',
$routing_key = '',
$mandatory = false,
$immediate = false,
$ticket = null
)
参数名 | 解释 |
---|---|
msg | 生产的消息 |
exchange | 交换器的名称,指明消息需要发送到哪个交换器中。如果设置为空字符串,则消息会被发送到RabbitMQ默认的交换器中。 |
routing_key | 路由键。交换器根据路由键将消息储存到相应的队列之中。 |
mandatory | 设置为true时,交换器无法根据自身的类型和路由键找到一个符合条件额队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当设置为false的时,出现上述问题,则消息直接被丢弃。 |
immediate | RabbitMQ3.0版本开始去掉对immediate参数的支持。 |
ticket |
queue_declare
声明队列 声明队列是幂等的-仅当队列不存在时才创建
/**
* Declares queue, creates if needed
*
* @param string $queue
* @param bool $passive
* @param bool $durable
* @param bool $exclusive
* @param bool $auto_delete
* @param bool $nowait
* @param array|AMQPTable $arguments
* @param int|null $ticket
* @return array|null
*@throws \PhpAmqpLib\Exception\AMQPTimeoutException if the specified operation timeout was exceeded
*/
public function queue_declare(
$queue = '',
$passive = false,
$durable = false,
$exclusive = false,
$auto_delete = true,
$nowait = false,
$arguments = array(),
$ticket = null
)
参数名 | 解释 |
---|---|
queue | 队列名称 |
passive | 只判断不创建(一般用于判断该队列是否存在),如果你希望查询队列是否存在,而又不想在查询时创建这个队列,设置此为true即可;如果队列不存在,则会抛出一个错误的异常,如果存在则返回NULL。 |
durable | 设置是否持久化。设置true表示持久化,反之非持久化。持久化的队列可以存盘,在服务器重启的时候不会丢失相关信息 |
exclusive | 设置是否排他。设置true时,表示为排他队列,该队列仅对首次首次声明它的连接可见,并在连接断开时自动删除。注意三点:排他队列是基于连接(Connection)可见的,同一个连接的不同信道(Channel)是可以同时访问同一连接创建的排他队列;“首次”是指如果同一个连接已经声明了一个排他队列,其他连接时不允许建立同名排他队列的,这个与普通队列不同;即使该队列是持久化的,一旦连接关闭或客户端退出,该排他队列都会自动删除,这种队列适合一个客户端同时发送和读取消息的场景。 |
auto_delete | 设置是否自动删除。设置true表示队列自动删除。自动删除的前提:至少一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除。不要错误的理解:“当连接到此队列的所有客户端断开时,这个队列自动删除”,因为生产者客户端创建这个队列,或没有消费者客户端与这个队列连接时,都不会自动删除这个队列。 |
nowait | 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。 |
arguments | 其他一些结构化参数。$arguments = new AMQPTable([ ‘x-message-ttl’ => 10000, // 延迟时间 (毫秒)创建queue时设置该参数可指定消息在该queue中待多久,可根据x-dead-letter-routing-key和x-dead-letter-exchange生成可延迟的死信队列。 ‘x-expires’ => 26000, // 队列存活时间 如果一个队列开始没有设置存活时间,后面又设置是无效的。 ‘x-dead-letter-exchange’ => ‘exchange_direct_ttl3’, // 延迟结束后指向交换机(死信收容交换机) ‘x-dead-letter-queue’ => ‘queue_ttl3’, // 延迟结束后指向队列(死信收容队列) ‘x-dead-letter-routing-key’ => ‘queue_ttl3’, // 设置routing-key ‘x-max-priority’=>‘10’ //声明优先级队列.表示队列应该支持的最大优先级。建议使用1到10之间.该参数会造成额外的CPU消耗。]); |
ticket |
queue_bind
将队列和交换器绑定。
/**
* Binds queue to an exchange
*
* @param string $queue
* @param string $exchange
* @param string $routing_key
* @param bool $nowait
* @param \PhpAmqpLib\Wire\AMQPTable|array $arguments
* @param int|null $ticket
* @throws \PhpAmqpLib\Exception\AMQPTimeoutException if the specified operation timeout was exceeded
* @return mixed|null
*/
public function queue_bind(
$queue,
$exchange,
$routing_key = '',
$nowait = false,
$arguments = array(),
$ticket = null
)
参数名 | 解释 |
---|---|
queue | 队列名称 |
exchange | 交换器名称 |
routing_key | 用来绑定队列和交换器的路由键 |
nowait | 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。 |
arguments | 定义绑定的一些参数 |
ticket |
exchange_bind
交换器与交换器绑定
/**
* Binds dest exchange to source exchange
*
* @param string $destination
* @param string $source
* @param string $routing_key
* @param bool $nowait
* @param \PhpAmqpLib\Wire\AMQPTable|array $arguments
* @param int|null $ticket
* @throws \PhpAmqpLib\Exception\AMQPTimeoutException if the specified operation timeout was exceeded
* @return mixed|null
*/
public function exchange_bind(
$destination,
$source,
$routing_key = '',
$nowait = false,
$arguments = array(),
$ticket = null
)
参数名 | 解释 |
---|---|
destination | 目标交换器(某种程度上可以看成一个队列) |
source | 源交换器(消息从source交换器到destination交换器) |
routing_key | 用来绑定队列和交换器的路由键 |
nowait | 用来绑定队列和交换器的路由键 |
arguments | 定义绑定的一些参数 |
ticket |
basic_consume
消费消息
/**
* Start a queue consumer.
* This method asks the server to start a "consumer", which is a transient request for messages
* from a specific queue.
* Consumers last as long as the channel they were declared on, or until the client cancels them.
*
* @link https://www.rabbitmq.com/amqp-0-9-1-reference.html#basic.consume
*
* @param string $queue
* @param string $consumer_tag
* @param bool $no_local
* @param bool $no_ack
* @param bool $exclusive
* @param bool $nowait
* @param callable|null $callback
* @param int|null $ticket
* @param \PhpAmqpLib\Wire\AMQPTable|array $arguments
*
* @throws \PhpAmqpLib\Exception\AMQPTimeoutException if the specified operation timeout was exceeded
* @throws \InvalidArgumentException
* @return string
*/
public function basic_consume(
$queue = '',
$consumer_tag = '',
$no_local = false,
$no_ack = false,
$exclusive = false,
$nowait = false,
$callback = null,
$ticket = null,
$arguments = array()
)
参数名 | 解释 |
---|---|
queue | 队列名称 |
consumer_tag | 消费者标签。用来区分多个消费者 |
no_local | AMQP的标准,但rabbitMQ并没有做实现 |
no_ack | 收到消息后,是否不需要回复确认即被认为被消费;设置为true,表示自动应答;设置为false表示手动应答 |
exclusive | 设置是否排他。排他消费者,即这个队列只能由一个消费者消费.适用于任务不允许进行并发处理的情况 |
nowait | 如果为true则表示不等待服务器回执信息.函数将返回NULL,但若排他开启的话,则必须需要等待结果的,如果两个一起开就会报错 |
callback | callback函数 |
ticket | |
arguments | 一些额外配置 |