MediaWiki  1.34.4
EventRelayerKafka.php
Go to the documentation of this file.
1 <?php
2 
3 use Kafka\Produce;
4 
16  protected $config;
17 
23  protected $producer;
24 
30  public function __construct( array $params ) {
31  parent::__construct( $params );
32 
33  $this->config = new HashConfig( $params );
34  if ( !$this->config->has( 'KafkaEventHost' ) ) {
35  throw new InvalidArgumentException( "KafkaEventHost must be configured" );
36  }
37  }
38 
43  protected function getKafkaProducer() {
44  if ( !$this->producer ) {
45  $this->producer = Produce::getInstance(
46  null, null, $this->config->get( 'KafkaEventHost' ) );
47  }
48  return $this->producer;
49  }
50 
51  protected function doNotify( $channel, array $events ) {
52  $jsonEvents = array_map( 'json_encode', $events );
53  try {
54  $producer = $this->getKafkaProducer();
55  $producer->setMessages( $channel, 0, $jsonEvents );
56  $producer->send();
57  } catch ( \Kafka\Exception $e ) {
58  $this->logger->warning( "Sending events failed: $e" );
59  return false;
60  }
61  return true;
62  }
63 }
HashConfig
A Config instance which stores all settings as a member variable.
Definition: HashConfig.php:28
EventRelayerKafka\doNotify
doNotify( $channel, array $events)
Definition: EventRelayerKafka.php:51
EventRelayerKafka\$config
Config $config
Configuration.
Definition: EventRelayerKafka.php:16
Config
Interface for configuration instances.
Definition: Config.php:28
EventRelayerKafka\$producer
Produce $producer
Kafka producer.
Definition: EventRelayerKafka.php:23
EventRelayerKafka\__construct
__construct(array $params)
Create Kafka producer.
Definition: EventRelayerKafka.php:30
EventRelayerKafka\getKafkaProducer
getKafkaProducer()
Get the producer object from kafka-php.
Definition: EventRelayerKafka.php:43
EventRelayerKafka
Event relayer for Apache Kafka.
Definition: EventRelayerKafka.php:10
EventRelayer
Base class for reliable event relays.
Definition: EventRelayer.php:27