Add support for RabbitMQ streams

With streams you will be able to use the replay
functionality. To keep track of the current message an
offset is used. The offset is periodically saved/stored and
when replayAll is called the consumer start to consume from the
beginning of the stream.
Every stream.windowSize we store
(current offset - stream.windowSize) as the offset to make
sure we replay missed messages when we restart a multi-site
instance.

Change-Id: I51a49533248ce94d1e6831071b033869c86db6d8
13 files changed
tree: 38b54885e578cde2967f65b272ea1c2935dc85d8
  1. src/
  2. .gitignore
  3. BUILD
  4. external_plugin_deps.bzl
  5. LICENSE
  6. README.md
README.md

gerrit-rabbitmq-plugin: Gerrit event publish plugin via RabbitMQ

Synopsis

Publish gerrit stream events to a RabbitMQ queue. This plugin works with any version of Gerrit starting from v2.8. This plugin also implements most of the events-broker API, so RabbitMQ can be used as a message-broker in a multi-master setup. The one part that is missing is the implementation of the replayAllEvents method. However, this method is not needed by the multi-site plugin.

Environments

  • linux
  • java-1.8
  • Bazel

Reference

Minimum Configuration

  [amqp]
    uri = amqp://localhost
  [exchange]
    name = exchange-for-gerrit-queue
  [message]
    routingKey = com.foobar.www.gerrit
  [gerrit]
    name = foobar-gerrit
    hostname = www.foobar.com

History

  • 3.14 (Freezed)

    • New branch: stable-2.10
    • HEAD in master is permanently latest but would not be updated by author anymore.
  • 3.1

    • Fix README
  • 3.0

    • New feature: multi url support
    • Bump amqp-client to 3.5.0
    • Bump Gradle shadow plugin to 1.2.1
    • Add Gradle release plugin 2.0.2
    • Fix & improve connection handling
  • 2.0

    • The feature that configure queue/exchange/bind has been removed. Means messages are published to existing exhange only.
    • Allow event filter based on an existing user (Thanks @GLundh!)
    • Fix singletonize Properties class and fix typo (Thanks @hugares!)
    • Add API support: 2.9-2.10
    • Bumped default Gerrit API to 2.10
    • Bumped amqp-client to 3.4.4
    • Bumped Gradle to 2.3
    • Remove Buck support
  • 1.4

    • Binary release
    • Add gradle support
    • Remove maven support
  • 1.3

    • Build with Buck
    • Bumped api version to 2.8.3
  • 1.2

    • Fix repository location for gerrit-api
    • Update README
  • 1.1

    • Fix channel handling
    • Add property: monitor.failureCount
    • Update README and documents
  • 1.0

    • First release

License

The Apache Software License, Version 2.0

Copyright

Copyright (c) 2013 rinrinne a.k.a. rin_ne