Files
kiri-core/Kafka/Consumer.php
T

72 lines
1.8 KiB
PHP
Raw Normal View History

2020-10-09 10:58:37 +08:00
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
// +---------------------------------------------------------------------------
// | SWAN [ $_SWANBR_SLOGAN_$ ]
// +---------------------------------------------------------------------------
// | Copyright $_SWANBR_COPYRIGHT_$
// +---------------------------------------------------------------------------
// | Version $_SWANBR_VERSION_$
// +---------------------------------------------------------------------------
// | Licensed ( $_SWANBR_LICENSED_URL_$ )
// +---------------------------------------------------------------------------
// | $_SWANBR_WEB_DOMAIN_$
// +---------------------------------------------------------------------------
namespace Kafka;
2020-10-09 18:35:41 +08:00
use function Amp\run;
2020-10-09 10:58:37 +08:00
/**
2020-10-09 18:35:41 +08:00
* +------------------------------------------------------------------------------
2020-10-09 19:21:02 +08:00
* Kafka protocol since Kafka v0.8
* +------------------------------------------------------------------------------
*
* @package
* @version $_SWANBR_VERSION_$
* @copyright Copyleft
* @author $_SWANBR_AUTHOR_$
* +------------------------------------------------------------------------------
*/
2020-10-09 10:58:37 +08:00
class Consumer
{
2020-10-09 19:21:02 +08:00
use \Psr\Log\LoggerAwareTrait;
use \Kafka\LoggerTrait;
private $isRunning = false;
2020-10-09 10:58:37 +08:00
2020-10-09 19:21:02 +08:00
/**
* __construct
*
* @access public
*/
public function __construct()
{
}
2020-10-09 10:58:37 +08:00
2020-10-09 19:21:02 +08:00
/**
* start consumer
*
* @access public
2020-10-10 13:55:14 +08:00
* @param \Closure|null $consumer
* @param bool $isBlock
2020-10-09 19:21:02 +08:00
* @return void
*/
public function start(\Closure $consumer = null, $isBlock = true)
{
if ($this->isRunning) {
$this->error('Has start consumer');
return;
}
$process = new \Kafka\Consumer\Process($consumer);
if ($this->logger) {
$process->setLogger($this->logger);
}
$process->start();
$this->isRunning = true;
if ($isBlock) {
run();
}
}
2020-10-09 10:58:37 +08:00
}