首页
仓库
文档
nginx手册
Docker手册
workerman
Flask
PHP
python
RabbitMQ
其他
Linux
占位1
占位2
目录
###exchange_declare #创建交换器 $channel->exchange_declare('demo2024', 'direct', false, true, false);#建议设置 **exchange_declare 方法的五个参数** name (string): 交换机的名称。在你的例子中,它是'demo2024'。 type (string): 交换机的类型。RabbitMQ支持多种类型的交换机,如'direct'、'fanout'、'topic'、'headers'等。 > 'direct':消息被发送到与消息中指定的路由键完全匹配的队列。 'fanout':消息被发送到所有与该交换机绑定的队列。 'topic':基于模式匹配将消息发送到队列。 'headers':基于消息头的属性进行匹配。 passive (bool): 如果设置为true,则服务器将检查交换机是否存在,节点上是否存在具有相同名称的交换机,并且具有相同的参数。如果交换机不存在,则抛出异常。如果设置为false(**默认值**),则创建交换机(如果不存在)。 durable (bool): 如果设置为true,则交换机将在RabbitMQ服务器重启后仍然存在。如果设置为false(默认值),则交换机在RabbitMQ服务器重启后将不再存在。 auto_delete (bool): 如果设置为true,则当没有队列与该交换机绑定时,该交换机将被自动删除。如果设置为false(默认值),则交换机不会自动删除。 ###queue_declare 创建队列 $channel->queue_declare('task_queue', true, false, false, false);;#建议设置 queue (string): 队列的名称。如果留空,RabbitMQ会自动生成一个唯一的名称。 durable (bool): 是否持久化队列。如果设置为true,队列将在RabbitMQ服务器重启后仍然存在。如果设置为false(默认值),则队列在RabbitMQ服务器重启后将不再存在。 exclusive (bool): 是否排他队列。如果设置为true,则队列仅对首次声明它的连接可见,并且该连接断开时队列将被自动删除。这里“首次”意味着如果队列已经存在,则不会因为它是排他队列而受到影响。如果设置为false(默认值),则队列对所有连接都是可见的。 auto_delete (bool): 当没有任何消费者连接到队列时,是否自动删除队列。如果设置为true,队列将在最后一个消费者断开连接时自动删除。如果设置为false(默认值),则队列不会自动删除。 arguments (array): 一个可选的字段参数数组,用于定义队列的额外属性。这些参数可以是各种RabbitMQ插件使用的,也可以用于定义队列的其他属性,如TTL(消息存活时间)、最大队列长度等。在大多数情况下,这个参数可以留空。 ###basic_consume 设置回调函数 $channel->basic_consume('task_queue', '', false, false, false, false, $callback);#建议设置 queue (string): 要从中接收消息的队列名称。 consumer_tag (string): 消费者标签。它是用来唯一标识消费者的字符串。如果你没有提供这个参数,RabbitMQ 会生成一个唯一的消费者标签。 no_local (bool): 这是一个可选参数,默认为 false。如果设置为 true,则当前连接上发布的消息将不会被此消费者接收。这通常用于避免消息被发送者自己消费。 no_ack (bool): 这是一个可选参数,默认为 false。如果设置为 true,则消费者将不会自动发送消息确认(acknowledgment)。这意味着 RabbitMQ 会在消息发送后立即将其从队列中移除,而不会等待消费者的确认。这种模式通常被称为“自动确认”(auto-ack)。在大多数情况下,为了确保消息的可靠传递,建议将 no_ack 设置为 false 并手动发送消息确认。 exclusive (bool): 这是一个可选参数,默认为 false。如果设置为 true,则队列将仅对当前连接可见,并且连接断开时队列将被自动删除。这种模式通常用于独占队列,即只允许一个消费者连接到该队列。 nowait (bool): 这是一个可选参数,默认为 false。如果设置为 true,则请求将不会等待服务器确认,这可能会导致一个更快速的失败通知。然而,在 PHP AMQP 库中,这个参数通常不常用,因为库本身会处理这些确认。 callback (callable): 这是一个回调函数,用于处理从队列接收到的消息。每当有新消息到达队列时,RabbitMQ 都会调用此函数,并将消息内容作为参数传递给它。回调函数通常接受一个 AMQPMessage 对象作为参数,你可以从这个对象中获取消息的内容和其他属性。 ###basic_qos $channel->basic_qos(null, 1, false);#处理完才取下一条。 $prefetch_size: 这是预取消息的大小(以字节为单位)。但是,通常这个参数会被设置为 0,因为它主要关注于数量而不是大小。 $prefetch_count: 这是消费者在未确认消息之前可以接收的最大消息数量。如果设置为 1,那么消费者一次只能处理一条消息,直到它发送确认(acknowledge)给 RabbitMQ。这可以确保消息是按顺序处理的,因为消费者一次只处理一条消息。 $global: 这是一个布尔值,如果设置为 true,则预取计数将应用于整个信道(channel),而不是每个消费者。但是,在实际应用中,这个参数通常被设置为 false,因为每个消费者可能具有不同的处理能力。 ###失败重发次数 RabbitMQ 本身并不直接提供“失败几次后不再重新入队”这样的内置功能。但是,你可以通过在你的应用程序逻辑中实现这种机制来达到类似的效果。