Split session into one session for publishing and one for subscribing

When using RabbitMQ it is recommended that:
* A channel is only used by one thread.
* A subscriber should use its own channel
* One connection is used for publishing and one is used for subscribing

Currently a connection is mapped to one channel. But by splitting
Session into one session for publishing and one for subscribing we can
can create different number of channels per connection for the different
cases.

Change-Id: I283ac18409dcb75eea37a930a8b7632034a1dbca
9 files changed
tree: d451eb83d70c68929251a9b437de1e095863d01a
  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