Samostatné použitie
Queuety je zabalený ako plugin pre WordPress, no väčšina behového prostredia v skutočnosti nepotrebuje aktívnu požiadavku WordPress.
Front, nástroj na vykonávanie workflow, stavové automaty, signály, artefakty, dávkové spracovanie, plánovanie, zaznamenávanie udalostí, metriky a správa zdrojov používajú tie isté MySQL tabuľky. Ak iný proces PHP dokáže otvoriť tú istú databázu, môže toto jadro používať priamo.
To je hranica samostatného používania v Queuety. Nástroj na orchestráciu založený na databáze možno používať mimo WordPress. Mosty WordPress však naďalej patria do WordPress.
Čo funguje mimo WordPress
Pri priamom pripojení Connection môže samostatný proces inicializovať Queuety a používať
rovnaké metódy rozhrania, aké plugin používa pre základné behové prostredie:
- odosielať úlohy
- spúšťať workery a skupiny workerov
- vytvárať a odosielať workflow
- odosielať signály, žiadosti o schválenie a vstupy workflow
- vytvárať a odosielať stavové automaty
- kontrolovať stav workflow a automatov
- ukladať a čítať artefakty
- riadiť dávkové spracovanie, reťazenie a opakujúce sa plány
- vyhľadávať v záznamoch, metrikách a frontoch a kontrolovať stav behového prostredia
Externý produkt tak môže pristupovať k rovnakému stavu orchestrácie bez predchádzajúceho spustenia WordPress, pokiaľ používa tú istú databázu a názvy tabuliek.
Skupiny workerov sú v súčasnosti jedinou výnimkou: Queuety::run_worker_pool() a
Queuety::run_auto_scaling_worker_pool() čítajú konštanty WordPress DB_HOST,
DB_NAME, DB_USER a DB_PASSWORD namiesto inicializovaného
pripojenia, takže samostatný proces musí tieto konštanty definovať ešte pred
spustením skupiny workerov (#5).
Čo zostáva v WordPress
Vrstva mostov špecifická pre WordPress naďalej závisí od načítania WordPress.
Patrí sem:
- zavádzanie pluginu a jeho aktivačné správanie v
queuety.php Queuety::on_action(), ktoré vyžadujeadd_action()Queuety::replace_wp_cron()aQueuety::restore_wp_cron(), ktoré závisia od filtrov WordPress cron ado_action()- skutočná cesta registrácie príkazu
wp queuety ..., ktorá závisí od načítania WordPress pomocou WP-CLI
Tieto časti sú adaptéry okolo základného behového prostredia. Samy osebe ním nie sú.
Inicializácia
Samostatná cesta je zámerne jednoduchá. Otvorte databázové pripojenie Connection,
inicializujte rozhranie a uistite sa, že schéma existuje.
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();
Potom budú k dispozícii bežné metódy behového prostredia 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();
Pomenovanie tabuliek
Na samostatné použitie nie sú potrebné konkrétne názvy tabuliek WordPress. Potrebná je iba stabilná stratégia predpôn.
Ak pripojíte Queuety k databáze WordPress, použite rovnakú predponu, akú tam používa
plugin. Ak použijete Queuety v samostatnej databáze, predpona pripojenia môže byť ľubovoľná, akú očakáva vaša hostiteľská aplikácia. Časť názvu tabuľky špecifická pre Queuety je stále riadená pomocou QUEUETY_TABLE_PREFIX a individuálnych
nastavení pre jednotlivé tabuľky.
Vstavané behové prostredia, ktoré zdieľajú jednu databázu, môžu nastaviť túto časť špecifickú pre Queuety pre každé pripojenie:
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
table_prefix: 'themequeue_',
);
Predpona databázy WordPress tak zostane nezmenená a názvy tabuliek, ako napríklad
queuety_jobs, sa prevedú na wp_themequeue_jobs.
Koncepčný model
Rozdelenie možno jednoducho chápať takto:
- jadro Queuety = front, workeri, workflow, stavové automaty, signály, artefakty a metadáta behového prostredia
- adaptér WordPress = zavádzanie pluginu, mosty hákov, náhrada WP-Cron a registrácia WP-CLI
Tak zostane zachovaný jeden nástroj na orchestráciu a integrácia udalostí a požiadaviek špecifická pre WordPress zostane tam, kam patrí.