This commit is contained in:
2020-12-28 18:21:20 +08:00
parent 7073096db5
commit cdbc39010e
3 changed files with 21 additions and 15 deletions
+10 -1
View File
@@ -16,10 +16,12 @@ use HttpServer\Service\Websocket;
use Exception; use Exception;
use ReflectionException; use ReflectionException;
use Snowflake\Abstracts\Config; use Snowflake\Abstracts\Config;
use Snowflake\Core\Json;
use Snowflake\Event; use Snowflake\Event;
use Snowflake\Exception\ConfigException; use Snowflake\Exception\ConfigException;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake; use Snowflake\Snowflake;
use Swoole\Process;
use Swoole\Runtime; use Swoole\Runtime;
/** /**
@@ -63,14 +65,18 @@ class Server extends Application
private array $process = []; private array $process = [];
private array $params = [];
/** /**
* @param $name * @param $name
* @param $process * @param $process
* @param array $pramas
*/ */
public function addProcess($name, $process) public function addProcess($name, $process, $pramas = [])
{ {
$this->process[$name] = $process; $this->process[$name] = $process;
$this->params[$name] = $pramas;
} }
@@ -241,6 +247,9 @@ class Server extends Application
continue; continue;
} }
$system = new $process(Snowflake::app(), $name, $is_enable_coroutine); $system = new $process(Snowflake::app(), $name, $is_enable_coroutine);
if (isset($this->params[$name])) {
$system->write(Json::encode($this->params[$name]));
}
$this->baseServer->addProcess($system); $this->baseServer->addProcess($system);
$application->set($process, $system); $application->set($process, $system);
} }
+1 -13
View File
@@ -32,25 +32,13 @@ class Kafka extends \Snowflake\Process\Process
/** /**
* @param Process $process * @param Process $process
* @throws ConfigException
* @throws \Exception * @throws \Exception
*/ */
public function onHandler(Process $process) public function onHandler(Process $process)
{ {
$this->channelListener(); $this->channelListener();
$waite = new WaitGroup(); $this->waite(json_decode($process->read(), true));
$kafkaServers = SConfig::get('kafka.servers');
foreach ($kafkaServers as $kafkaServer) {
$waite->add();
go(function () use ($kafkaServer, $waite) {
defer(function () use ($waite) {
$waite->done();
});
$this->waite($kafkaServer);
});
}
$waite->wait();
} }
+10 -1
View File
@@ -6,6 +6,7 @@ namespace Kafka;
use Exception; use Exception;
use HttpServer\Server; use HttpServer\Server;
use Snowflake\Abstracts\Config;
use Snowflake\Abstracts\Config as SConfig; use Snowflake\Abstracts\Config as SConfig;
use Snowflake\Abstracts\Providers; use Snowflake\Abstracts\Providers;
use Snowflake\Application; use Snowflake\Application;
@@ -34,7 +35,15 @@ class KafkaProviders extends Providers
if (!extension_loaded('rdkafka')) { if (!extension_loaded('rdkafka')) {
return; return;
} }
$server->addProcess('kafka', Kafka::class);
$kafkaServers = Config::get('kafka.servers', false, []);
if (empty($kafkaServers)) {
return;
}
foreach ($kafkaServers as $index => $kafkaServer) {
$server->addProcess('kafka_' . $index, Kafka::class, $kafkaServer);
}
} }
} }