loungeup / nats-sdk
NATS SDK for PHP services
dev-master
2024-02-15 15:38 UTC
Requires
- php: ^8.2
- ext-openswoole: ^22.0.0
- illuminate/log: ^9.42 | ^10.0
- loungeup/nats-swoole: dev-master
Requires (Dev)
- loungeup/resgate-sdk: dev-master
- openswoole/ide-helper: ^4.10
- phpunit/phpunit: ^9.5
This package is not auto-updated.
Last update: 2025-03-13 20:47:25 UTC
README
Handler for Nats :
- Routing system
Getting Started
Installation
Nats Sdk requires PHP >= 7.4.
composer require nats-sdk/nats
Basic Usage
Create Route file in './routes/*' folder
<?php const CONTROLLER_MODEL = ModelController::class; // $router->add('event.name', [controllerClass, 'methodToCall'], 'Description'); // Example with a CRUD $router->add( "get.service.models", [CONTROLLER_MODEL, "getModels"], "Get list of models" ); $router->add( "get.service.models.*", [CONTROLLER_MODEL, "getModel"], "Get a model" ); $router->add( "call.service.models.new", [CONTROLLER_MODEL, "insertModel"], "Insert a model" ); $router->add( "call.service.models.*.set", [CONTROLLER_MODEL, "updateModel"], "Update a model" ); $router->add( "call.service.models.*.delete", [CONTROLLER_MODEL, "deleteModel"], "Delete a model" );
Create an instance of router with routing files
$router = Router::getInstance(); $router->setRoot(strtolower($this->app->get("config")["app"]["name"])); $router->setNamespace("App\Controllers"); // Get all routes setup files $files = glob(base_path("routes/") . "*.php", GLOB_BRACE); foreach ($files as $file) { require $file; }
Nats Subscribing with all routes load a message driver to processing with Nats message and return a response.
// Setup Nats handler $natsHandler = new NatsHandler( $config["nats"]["host"], $config["nats"]["port"] ); $natsHandler->setVerbose($config["debug"]); // Generate routes $router = Router::getInstance(); $routes = $router->getRoutes(); // Subscribe all nats events $currentMessageDriver = $config["message"]["drivers"][$config["message"]["current"]]; $messageDriver = new $currentMessageDriver(); $natsHandler->subscribeRoutes($routes, $messageDriver); // Keep waiting events $natsHandler->wait();