commit | ea9e54c48b1c80f5ebec16c13f576657f6d65c19 | [log] [tgz] |
---|---|---|
author | Marcin Czech <maczech@gmail.com> | Thu Jan 20 01:49:50 2022 +0100 |
committer | Marcin Czech <maczech@gmail.com> | Mon Jan 24 20:26:20 2022 +0000 |
tree | eb05a887290ebc288a24cf4e1ff76dde44d37c86 | |
parent | 4eb88f21fde3de089e314ff94f6d39c292f1e84f [diff] |
Use Kafka REST Proxy id to subscribe to the correct instance When using a Kafka REST Proxy with multiple instances behind a workload balancer, the consumers are allocated on one of the allocated instances. The Kafka REST client needs to understand which one is the instance that the client should talk to. For deployments that can use workload balancers with sticky sessions, there isn't any logic needed on the client side, because the cookies allocated and stored on the client would do the job. However, when using a standard K8s deployment[1], the sticky session allocation isn't an option and any of the incoming traffic may reach any of the pods. Kafka REST Proxy allows with this change to specify the REST_PROXY_ID with the placeholder ${rest_proxy_id} in the API URL, to help redirecting the calls to the correct instance. Example: [plugin "events-kafka"] restApiUri = http://kafka-rest:8080/${kafka_rest_id} [1] https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Change-Id: I396c3bc759ee05547e8c16cb4806b4fea63b833c
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.
linux
java-1.8
Bazel
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/events-kafka gerrit/plugins/events-kafka cd gerrit rm plugins/external_plugin_deps.bzl ln -s ./events-kafka/external_plugin_deps.bzl plugins/.
To build the events-kafka plugins, issue the command from the Gerrit source path:
bazel build plugins/events-kafka
The output is created in
bazel-genfiles/plugins/events-kafka/events-kafka.jar
Assuming a running Kafka broker on the same Gerrit host, add the following settings to gerrit.config:
[plugin "events-kafka"] bootstrapServers = localhost:9092