loungeup/nats-sdk

NATS SDK 用于 PHP 服务

dev-master 2024-02-15 15:38 UTC

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