charcoal/queue

Charcoal 的队列,队列项目和队列对象

v5.0.0 2024-03-13 15:05 UTC

README

队列包提供了一种抽象的队列服务,用于延迟处理耗时的任务。

安装

composer require charcoal/queue

使用方法

队列系统

队列管理器循环队列项目。队列项目表示要执行的操作(由 process() 方法定义)。

队列管理器

队列管理器作为一个抽象类 AbstractQueueManager 提供。这个类实现了 QueueManagerInterface

可以通过 rate 属性(每秒项目数)来控制处理速度(节流)。

可以通过 limit 属性来控制批量限制(每次迭代处理的项目数)。

可以使用 queue_id 来识别队列。它可以通过 setQueueId() 来设置。

可以使用 processQueue() 来处理队列。如果由于任何原因需要加载数据,可以使用 loadQueueItems()

可以定义 4 个回调函数

  • setProcessedCallback()
  • setItemCallback()
  • setItemSuccessCallbak()
  • setItemFailureCallback()

只有一个抽象方法

  • queueItemProto(),它必须返回一个 QueueItemInterface 实例

队列项目

队列项目应该实现 QueueItemInterface。这可以通过 QueueItemTrait 来帮助实现。

可以使用 queue_id 来识别队列项目。(与队列管理器使用的相同 queue_id)。

可以使用 process($callback, $successCallback, $failureCallback) 来处理项目。

队列项目属性包括

  • queue_id
  • queue_item_data
  • queued_date
  • processing_date
  • processed_date
  • processed

可队列对象

QueueableInterface 定义了可以入队列的对象。这个接口非常简单,只提供了

  • setQueueId()(可以从 QueueableTrait 继承)
  • queueId()queue_id 获取器)(可以从 QueueableTrait 继承)
  • queue($ts = null)(这是一个抽象方法,必须在实现队列接口的类中实现)

资源