RabbitMQ各方法详解
exchange_declare($exchange, $type, $passive = false, $durable = false, $auto_delete = true, $internal = false, $nowait = false, $arguments = array(), $ticket = null) 。试探性申请一个交换器,若该交换器不存在,则创建;若存在,则跳过。
序号 参数名 默认值 解释
1 $exchange 交换器名称。
2 $type 交换器类型,常见的如fanout、direct、topic、headers四种。
3 $passive false 只判断不创建(一般用于判断该交换机是否存在),如果你希望查询交换机是否存在.而又不想在查询时创建这个交换机.设置此为true即可如果交换机不存在,则会抛出一个错误的异常.如果存在则返回NULL。
4 $durable false 设置是否持久化。设置true表示持久化,反之非持久化。持久化可以将交换器存盘,在服务器重启的时候不会丢失相关信息。
5 $auto_delete true 设置是否自动删除。设置true表示自动删除。自动删除的前提:至少有一个队列或交换器与这个交换器绑定,之后所有与这个交换器绑定的队列或交换器都与此解绑。不要错误的理解:“当与此交换器连接的客户端都断开时,RabbitMQ会自动删除本交换器”。
6 $internal false 设置是否是内置的。设置true表示是内置的交换器,客户端程序无法直接发送消息到这个交换器中,只能通过交换器路由到交换器这个方式。
7 $nowait false 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。
8 $arguments array() 其他一些结构化参数。
9 $ticket null
queue_declare($queue = '', $passive = false, $durable = false, $exclusive = false, $auto_delete = true, $nowait = false, $arguments = array(), $ticket = null)。试探性申请一个交换器,若该交换器不存在,则创建;若存在,则跳过。
序号 参数名 默认值 解释
1 $queue 队列名称。
2 $passive false 只判断不创建(一般用于判断该队列是否存在),如果你希望查询队列是否存在,而又不想在查询时创建这个队列,设置此为true即可;如果队列不存在,则会抛出一个错误的异常,如果存在则返回NULL。
3 $durable false 设置是否持久化。设置true表示持久化,反之非持久化。持久化的队列可以存盘,在服务器重启的时候不会丢失相关信息。
4 $exclusive false 设置是否排他。设置true时,表示为排他队列,该队列仅对首次首次声明它的连接可见,并在连接断开时自动删除。注意三点:排他队列是基于连接(Connection)可见的,同一个连接的不同信道(Channel)是可以同时访问同一连接创建的排他队列;“首次”是指如果同一个连接已经声明了一个排他队列,其他连接时不允许建立同名排他队列的,这个与普通队列不同;即使该队列是持久化的,一旦连接关闭或客户端退出,该排他队列都会自动删除,这种队列适合一个客户端同时发送和读取消息的场景。
5 $auto_delete true 设置是否自动删除。设置true表示队列自动删除。自动删除的前提:至少一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除。不要错误的理解:“当连接到此队列的所有客户端断开时,这个队列自动删除”,因为生产者客户端创建这个队列,或没有消费者客户端与这个队列连接时,都不会自动删除这个队列。
6 $nowait false 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。
7 $arguments array() 其他一些结构化参数。$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消耗。
]
);
8 $ticket null
queue_bind($queue, $exchange, $routing_key = '', $nowait = false, $arguments = array(), $ticket = null)。将队列和交换器绑定。
序号 参数名 默认值 解释
1 $queue 队列名称。
2 $exchange 交换器名称。
3 $routing_key 无 用来绑定队列和交换器的路由键
4 $nowait false 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。
5 $arguments array() 定义绑定的一些参数
6 $ticket null
exchange_bind($destination, $source, $routing_key = '', $nowait = false, $arguments = array(), $ticket = null)。交换器与交换器绑定。
序号 参数名 默认值 解释
1 $destination 目标交换器(某种程度上可以看成一个队列)。
2 $source 源交换器(消息从source交换器到destination交换器)。
3 $routing_key 无 用来绑定队列和交换器的路由键
4 $nowait false 如果为true则表示不等待服务器回执信息.函数将返回NULL,可以提高访问速度。
5 $arguments array() 定义绑定的一些参数
6 $ticket null
basic_publish($msg, $exchange = '', $routing_key = '', $mandatory = false, $immediate = false, $ticket = null)。生产消息。
序号 参数名 默认值 解释
1 $msg 生产的消息
2 $exchange 交换器的名称,指明消息需要发送到哪个交换器中。如果设置为空字符串,则消息会被发送到RabbitMQ默认的交换器中。
3 $routing_key 路由键。交换器根据路由键将消息储存到相应的队列之中。
4 $mandatory false 设置为true时,交换器无法根据自身的类型和路由键找到一个符合条件额队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当设置为false的时,出现上述问题,则消息直接被丢弃。
5 $immediate fasle RabbitMQ3.0版本开始去掉对immediate参数的支持。
6 $ticket null
basic_consume($queue = '', $consumer_tag = '', $no_local = false, $no_ack = false, $exclusive = false, $nowait = false, $callback = null, $ticket = null, $arguments = array())。消费消息。
序号 参数名 默认值 解释
1 $queue 队列名称。
2 $consumer_tag 消费者标签。用来区分多个消费者。
3 $no_local false AMQP的标准,但rabbitMQ并没有做实现。
4 $no_ack false 收到消息后,是否不需要回复确认即被认为被消费;设置为true,表示自动应答;设置为false表示手动应答。
5 $exclusive false 设置是否排他。排他消费者,即这个队列只能由一个消费者消费.适用于任务不允许进行并发处理的情况。
6 $nowait false 如果为true则表示不等待服务器回执信息.函数将返回NULL,但若排他开启的话,则必须需要等待结果的,如果两个一起开就会报错。
7 $callback null callback函数
8 $arguments array() 一些额外配置
————————————————
原文链接:https://blog.csdn.net/qq_34272964/article/details/103937896
posted on 2021-05-19 08:58 andydaopeng 阅读(309) 评论(0) 编辑 收藏 举报