Link Search Menu Expand Document

支持Enqueue

Enqueue 是一个 MIT 许可的开源项目,它的持续开发完全得益于社区和我们客户的支持。如果您想加入他们,请考虑:


运行唯一性作业

有一个构建在传输之上的作业队列组件。它提供了一些额外功能:

  • 将作业存储到数据库。因此,您可以查询该信息并为其构建 UI。
  • 运行唯一性作业。如果使用,则保证没有任何同名作业同时运行。
  • 子作业。如果使用,则允许将大作业拆分为较小的部分,并异步并行处理它们。
  • 依赖性作业。如果使用,则允许在整个作业(包括子作业)完成时发送消息。

这里有一些例子。 它展示了如何使用作业队列运行唯一性作业(其配置则在专门的章节中阐述)。

<?php
use Interop\Queue\Message;
use Interop\Queue\Context;
use Interop\Queue\Processor;
use Enqueue\JobQueue\JobRunner;

class UniqueJobProcessor implements Processor
{
    /** @var JobRunner */
    private $jobRunner;

    public function process(Message $message, Context $context)
    {
        $result = $this->jobRunner->runUnique($message->getMessageId(), 'aJobName', function () {
            // 进行你的作业,这里没有任何其他进程执行相同的作业。

            return true; // ACK 该消息,false则为 REJECT
        });

        return $result ? self::ACK : self::REJECT;
    }
}

返回首页