modify
This commit is contained in:
@@ -7,6 +7,9 @@ namespace HttpServer\Events;
|
||||
use Annotation\Loader;
|
||||
use Exception;
|
||||
use HttpServer\Abstracts\Callback;
|
||||
use Kafka\ConsumerInterface;
|
||||
use Kafka\Struct;
|
||||
use Kafka\TaskContainer;
|
||||
use Snowflake\Event;
|
||||
use Snowflake\Exception\ComponentException;
|
||||
use Snowflake\Snowflake;
|
||||
@@ -28,8 +31,47 @@ class OnPipeMessage extends Callback
|
||||
*/
|
||||
public function onHandler(Server $server, int $src_worker_id, $message)
|
||||
{
|
||||
$events = Snowflake::app()->getEvent();
|
||||
$events->trigger(Event::PIPE_MESSAGE, [$server, $src_worker_id, $message]);
|
||||
try {
|
||||
$swoole_unserialize = swoole_unserialize($message);
|
||||
match ($swoole_unserialize['action'] ?? null) {
|
||||
'kafka' => $this->onKafkaWorker($swoole_unserialize),
|
||||
default => $this->onMessageWorker($server, $src_worker_id, $message)
|
||||
};
|
||||
} catch (\Throwable $exception) {
|
||||
$this->addError($exception);
|
||||
} finally {
|
||||
fire(Event::SYSTEM_RESOURCE_RELEASES);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $server
|
||||
* @param $src_worker_id
|
||||
* @param $message
|
||||
* @throws \Exception
|
||||
*/
|
||||
private function onMessageWorker($server, $src_worker_id, $message)
|
||||
{
|
||||
fire(Event::PIPE_MESSAGE, [$server, $src_worker_id, $message]);
|
||||
|
||||
return 'success';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $message
|
||||
* @throws \ReflectionException
|
||||
* @throws \Snowflake\Exception\NotFindClassException
|
||||
*/
|
||||
private function onKafkaWorker(array $message)
|
||||
{
|
||||
[$topic, $message] = $message['body'];
|
||||
|
||||
$container = TaskContainer::getInstance();
|
||||
$container->process($topic, new Struct($topic, $message));
|
||||
return 'success';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user