Preskočiť na obsah

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žaduje add_action()
  • Queuety::replace_wp_cron() a Queuety::restore_wp_cron(), ktoré závisia od filtrov WordPress cron a do_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.

PHP
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:

PHP
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:

PHP
$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í.