独立使用
Queuety 以 WordPress 插件的形式打包,但大多数运行时实际上并不需要实时的 WordPress 请求。
队列、工作流引擎、状态机、信号、构件、批处理、调度、日志记录、指标和资源管理都基于同一组 MySQL 表运行。只要另一个 PHP 进程可以打开同一个数据库,就可以直接使用该核心。
这就是 Queuety 中独立使用的边界。数据库支持的编排引擎可在 WordPress 之外使用。WordPress 桥接层仍属于 WordPress。
WordPress 之外可用的功能
通过直接使用 Connection,独立进程可以初始化 Queuety,并使用插件为核心运行时提供的相同门面方法:
- 分发任务
- 运行工作进程和工作进程池
- 构建并分发工作流
- 发送信号、审批和工作流输入
- 构建并分发状态机
- 检查工作流和状态机的状态
- 存储和读取构件
- 执行批处理、任务链接和周期性调度
- 查询日志、指标、队列和运行时状态
这意味着外部产品无需先启动 WordPress,也能访问相同的编排状态,前提是它使用相同的数据库和表名。
目前工作进程池是唯一的例外:Queuety::run_worker_pool() 和 Queuety::run_auto_scaling_worker_pool() 读取 WordPress DB_HOST、DB_NAME、DB_USER 和 DB_PASSWORD 常量,而不是已初始化的连接,因此独立进程必须在启动工作进程池前定义这些常量(#5)。
WordPress 内部保留的功能
WordPress 专用桥接层仍依赖于已加载的 WordPress。
其中包括:
queuety.php中的插件引导和激活行为Queuety::on_action(),需要add_action()Queuety::replace_wp_cron()和Queuety::restore_wp_cron(),它们依赖于 WordPress cron 过滤器和do_action()- 实际的
wp queuety ...命令注册路径,它依赖于 WP-CLI 加载 WordPress
这些部分是围绕核心运行时的适配器,而非运行时本身。
初始化
独立使用路径刻意设计得很精简。打开一个数据库支持的 Connection,初始化门面,并确保架构存在。
use Queuety\Connection;
use Queuety\Queuety;
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
);
Queuety::init( $conn );
Queuety::ensure_schema();
完成后,即可使用常规运行时 API:
Queuety::dispatch( 'send_email', [ 'to' => 'user@example.com' ] );
$workflow_id = Queuety::workflow( 'report' )
->then( FetchReportData::class )
->then( RenderReport::class )
->dispatch( [ 'report_id' => 42 ] );
$machine_id = Queuety::machine( 'agent_session' )
->state( 'awaiting_input' )
->on( 'message', 'planning' )
->state( 'planning' )
->action( PlanSessionAction::class )
->dispatch();
表命名
独立使用不要求使用特定的 WordPress 表名,只需要稳定的前缀策略。
如果将 Queuety 指向 WordPress 数据库,请使用插件在那里采用的相同前缀。如果在单独的数据库中使用 Queuety,连接前缀可以按宿主应用程序的要求设置。Queuety 专用表名部分仍由 QUEUETY_TABLE_PREFIX 和各表的覆盖设置控制。
共享同一数据库的嵌入式运行时可以针对每个连接设置该 Queuety 专用部分:
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
table_prefix: 'themequeue_',
);
这样既保留了 WordPress 数据库前缀,又能将诸如 queuety_jobs 的表解析为 wp_themequeue_jobs。
思维模型
理解这种拆分的简单方式是:
- Queuety 核心 = 队列、工作进程、工作流、状态机、信号、构件和运行时元数据
- WordPress 适配器 = 插件引导、钩子桥接、WP-Cron 替换和 WP-CLI 注册
这样既能保留单一的编排引擎,也能让 WordPress 专用事件和请求集成留在应有的位置。