- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 php使用rabbitmq生产者生产消息时如何确保消息的持久化
当 `delivery_mode` 设置为 `AMQPMessage::DELIVERY_MODE_PERSISTENT` 时,RabbitMQ 会将这条消息写入磁盘,以确保即使 RabbitMQ 服务重启后,这条消息也不会丢失。如果 `delivery_mode` 设置为 `AMQPMessage::DELIVERY_MODE_NON_PERSISTENT`,则消息不会被写入磁盘,这通常会带来更高的性能,但若 RabbitMQ 服务在处理这些消息之前崩溃,这些消息可能会丢失。
2024-09-20 10:56:37 506
原创 php使用rabbitmq声明队列$channel->queue_declare($config[‘queue_name‘], false, true, false, false);中各参数的含义
这里设置为 `false`,意味着队列是非持久化的,RabbitMQ 服务重启后队列将会丢失。如果设置为 `true`,则不会创建队列,而是检查队列是否存在。总结起来,这段代码的意义是声明一个非持久化、排他性的队列,该队列不会因为消费者取消订阅而自动删除,并且如果队列不存在则会创建它。如果设置为 `true`,则队列只允许当前连接访问,并且在连接关闭时会自动删除队列。- `false` (auto_delete): 第四个参数表示当最后一个消费者取消订阅时,队列是否应该自动删除。
2024-09-20 10:45:56 435
原创 $msg->delivery_info[‘channel‘]->basic_ack($msg->delivery_tag);的意义
这里的参数 `$msg->delivery_tag` 是一个唯一标识符,用来指代由 RabbitMQ 分配给每条消息的标签,这样 RabbitMQ 就知道哪条消息被确认了。这意味着如果消费者在处理这条消息的过程中崩溃或关闭连接,RabbitMQ 将认为这条消息没有被正确处理,并可能将其重新发送给其他消费者或者在当前消费者恢复后再次发送。简而言之,这行代码的功能就是向 RabbitMQ 发送一个确认信号,表明某条消息已经被成功接收和处理,从而允许 RabbitMQ 把这条消息从队列中删除。
2024-09-20 10:40:52 348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人