Allow to send message to Kafka asynchronously

Introduce a new configuration setting plugin.kafka-events.sendAsync
that allows to control the synchrony of the send() operation to a
Kafka producer.

The existing behaviour on stable-2.16 do not wait for the Kafka
broker to confirm that the message is sent to all the in-sync replicas.
By disabling the asynchronous send of message, the send() would wait
for the message to be sent  and return the boolean result
of the operation.

NOTE: The drawback of the enabling the sendAsync parameter is that
      the broker-api would only return the status of the successful
      invocation of the Produder.send() operation and not the actual
      ack received by the Broker at the successful replication to
      all the replicas.

Bug: Issue 12604
Change-Id: Iec5d1efb033d978bf12c47317895c68604dffecb
5 files changed
tree: f3bf1f4d44c59036cd2e0b2fbee730d2747e101e
  1. src/
  2. BUILD
  3. external_plugin_deps.bzl
  4. LICENSE
  5. README.md
README.md

Kafka: Gerrit event producer for Apache Kafka

Build Status

Synopsis

This plugins allows to define a distributed stream of events published by Gerrit.

Events can be anything, from the traditional stream events to the Gerrit metrics.

This plugin requires Gerrit 2.13 or laster.

Environments

  • linux
  • java-1.8
  • Bazel

Build

Kafka plugin can be build as a regular ‘in-tree’ plugin. That means that is required to clone a Gerrit source tree first and then to have the Kafka plugin source directory into the /plugins path. Additionally, the plugins/external_plugin_deps.bzl file needs to be updated to match the Kafka plugin one.

git clone --recursive https://gerrit.googlesource.com/gerrit
git clone https://gerrit.googlesource.com/plugins/kafka-events gerrit/plugins/kafka-events
cd gerrit
rm plugins/external_plugin_deps.bzl
ln -s ./kafka-events/external_plugin_deps.bzl plugins/.

To build the kafka-events plugins, issue the command from the Gerrit source path:

bazel build plugins/kafka-events

The output is created in

bazel-genfiles/plugins/kafka-events/kafka-events.jar

Minimum Configuration

Assuming a running Kafka broker on the same Gerrit host, add the following settings to gerrit.config:

  [plugin "kafka-events"]
    bootstrapServers = localhost:9092