Liigu sisu juurde

Iseseisev kasutus

Queuety on pakendatud WordPress-pluginana, kuid enamik käitusajast ei vaja aktiivset WordPress-päringut.

Järjekord, töövoomootor, olekumasinad, signaalid, artefaktid, partiitöötlus, ajastamine, logimine, mõõdikud ja ressursihaldus töötavad kõik samade MySQL tabelite peal. Kui mõni teine PHP protsess saab sama andmebaasi avada, saab see tuuma otse kasutada.

See on Queuety iseseisva kasutuse piir. Andmebaasil põhinevat orkestreerimismootorit saab kasutada väljaspool WordPress-i. Sillad WordPress kuuluvad endiselt WordPress-i juurde.

Mis töötab väljaspool WordPress-i

Otseühendusega Connection abil saab iseseisev protsess lähtestada Queuety ja kasutada samu fassaadimeetodeid, mida plugin kasutab käitusaja tuuma jaoks:

  • väljasta töid
  • käivita töötajaid ja töötajate kogumeid
  • koosta ja käivita töövooge
  • saada signaale, kinnitusi ja töövoo sisendit
  • koosta ja käivita olekumasinaid
  • kontrolli töövoo ja masina olekut
  • salvesta ja loe artefakte
  • halda partiitöötlust, aheldamist ja korduvaid ajakavasid
  • päri logisid, mõõdikuid, järjekordi ja käitusaja olekut

See tähendab, et väline toode saab kasutada sama orkestreerimisolekut ilma WordPress-i esmalt käivitamata, kui see kasutab sama andmebaasi ja tabelinimesid.

Töötajate kogumid on praegu ainus erand: Queuety::run_worker_pool() ja Queuety::run_auto_scaling_worker_pool() loevad lähtestatud ühenduse asemel konstante WordPress DB_HOST, DB_NAME, DB_USER ja DB_PASSWORD, seega peab iseseisev protsess need konstandid enne kogumi käivitamist määratlema (#5).

Mis jääb WordPress-i sisse

WordPress-i spetsiifiline sillakiht sõltub endiselt sellest, et WordPress oleks laaditud.

See hõlmab järgmist:

  • plugina alglaadimine ja aktiveerimine keskkonnas queuety.php
  • Queuety::on_action(), mis nõuab elementi add_action()
  • Queuety::replace_wp_cron() ja Queuety::restore_wp_cron(), mis sõltuvad filtritest WordPress cron ja elemendist do_action()
  • tegelik wp queuety ... käsu registreerimise tee, mis sõltub sellest, et WP-CLI laadib elemendi WordPress

Need osad on käitusaja tuuma ümbritsevad adapterid. Need ei ole käitusaeg ise.

Lähtestamine

Iseseisev tee on teadlikult väike. Avage andmebaasiga seotud Connection, lähtestage fassaad ja veenduge, et skeem on olemas.

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();

Seejärel on saadaval tavaline käitusaja 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();

Tabelite nimetamine

Iseseisval kasutamisel pole vaja kasutada tingimata WordPress tabelinimesid. Vajalik on vaid püsiv eesliite strateegia.

Kui suunate Queuety ühenduse WordPress andmebaasi, kasutage sama eesliidet, mida plugin seal kasutab. Kui kasutate Queuety eraldi andmebaasis, võib ühenduse eesliide olla ükskõik milline, mida teie hostrakendus eeldab. Queuety-i spetsiifilist tabeliosa juhivad endiselt QUEUETY_TABLE_PREFIX ja tabelipõhised ülekirjutused.

Ühte andmebaasi jagavad manustatud käituskeskkonnad saavad määrata selle Queuety-i spetsiifilise osa iga ühenduse jaoks eraldi:

PHP
$conn = new Connection(
    host: '127.0.0.1:3306',
    dbname: 'wordpress',
    user: 'root',
    password: 'secret',
    prefix: 'wp_',
    table_prefix: 'themequeue_',
);

Nii jääb WordPress andmebaasi eesliide puutumata ning tabelid, näiteks queuety_jobs, suunatakse nimele wp_themequeue_jobs.

Mõttemudel

Osadest on kõige lihtsam mõelda nii:

  • Queuety tuum = järjekord, töötajad, töövood, olekumasinad, signaalid, artefaktid ja käitusaja metaandmed
  • WordPress adapter = plugina alglaadimine, hook-sillad, WP-Cron asendus ja WP-CLI registreerimine

Nii säilib üks orkestreerimismootor ning WordPress-i spetsiifiline sündmuste ja päringute lõimimine jääb sinna, kuhu see kuulub.