loungeup / nats-sdk
NATS SDK 用于 PHP 服务
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: 2024-09-26 18:44:28 UTC
README
Nats 处理器
- 路由系统
入门指南
安装
NATS SDK 需要 PHP >= 7.4。
composer require nats-sdk/nats
基本用法
在 './routes/*' 文件夹中创建路由文件
<?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" );
使用路由文件创建路由器实例
$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 消息进行处理,并返回响应。
// 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();