modify
This commit is contained in:
@@ -68,6 +68,10 @@ class OnPipeMessage extends Callback
|
|||||||
{
|
{
|
||||||
[$topic, $message] = $message['body'];
|
[$topic, $message] = $message['body'];
|
||||||
|
|
||||||
|
call_user_func($message['handler'], new Struct($topic, $message));
|
||||||
|
|
||||||
|
return 'success';
|
||||||
|
|
||||||
/** @var TaskContainer $container */
|
/** @var TaskContainer $container */
|
||||||
$container = Snowflake::app()->get('kafka-container');
|
$container = Snowflake::app()->get('kafka-container');
|
||||||
$container->process($topic, new Struct($topic, $message));
|
$container->process($topic, new Struct($topic, $message));
|
||||||
|
|||||||
+8
-1
@@ -104,7 +104,14 @@ class Kafka extends \Snowflake\Process\Process
|
|||||||
|
|
||||||
$setting = $server->setting['worker_num'];
|
$setting = $server->setting['worker_num'];
|
||||||
|
|
||||||
$message = swoole_serialize(['action' => 'kafka', 'body' => [$topic, $message]]);
|
/** @var TaskContainer $container */
|
||||||
|
$container = Snowflake::app()->get('kafka-container');
|
||||||
|
$handler = $container->getConsumer($topic);
|
||||||
|
|
||||||
|
if (empty($handler)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$message = swoole_serialize(['action' => 'kafka', 'handler' => $handler, 'body' => [$topic, $message]]);
|
||||||
|
|
||||||
$server->sendMessage($message, random_int(0, $setting - 1));
|
$server->sendMessage($message, random_int(0, $setting - 1));
|
||||||
} catch (Throwable $exception) {
|
} catch (Throwable $exception) {
|
||||||
|
|||||||
@@ -31,6 +31,16 @@ class TaskContainer extends BaseObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $topic
|
||||||
|
* @return mixed|null
|
||||||
|
*/
|
||||||
|
public function getConsumer(string $topic)
|
||||||
|
{
|
||||||
|
return $this->_topics[$topic] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $topic
|
* @param $topic
|
||||||
* @param \Kafka\Struct $struct
|
* @param \Kafka\Struct $struct
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ use Snowflake\Application;
|
|||||||
use Snowflake\Event;
|
use Snowflake\Event;
|
||||||
use Snowflake\Exception\ComponentException;
|
use Snowflake\Exception\ComponentException;
|
||||||
use Snowflake\Snowflake;
|
use Snowflake\Snowflake;
|
||||||
|
use Swoole\Coroutine\System;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Process
|
* Class Process
|
||||||
@@ -35,6 +36,11 @@ abstract class Process extends \Swoole\Process implements SProcess
|
|||||||
parent::__construct([$this, '_load'], false, 1, $enable_coroutine);
|
parent::__construct([$this, '_load'], false, 1, $enable_coroutine);
|
||||||
$this->application = $application;
|
$this->application = $application;
|
||||||
Snowflake::setProcessId($this->pid);
|
Snowflake::setProcessId($this->pid);
|
||||||
|
|
||||||
|
$content = System::readFile(storage('runtime.php'));
|
||||||
|
|
||||||
|
$annotation = Snowflake::app()->getAnnotation();
|
||||||
|
$annotation->setLoader(unserialize($content));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user