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