Set event.type to default routingKey The type of the event is much more useful than a static routingKey. Keep using the routingKey from the config if specified for backwards compatibility. Bug: Issue 16775 Change-Id: I38e7da53fef3ad19e2f8ea551290d09fe8db2fc9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java index 0a35f54..8096556 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java +++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
@@ -181,7 +181,7 @@ } private boolean publishEvent(Event event) { - return session.publish(gson.toJson(event)); + return session.publish(gson.toJson(event), event.type); } private void connect() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/Session.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/Session.java index 7d0669f..841ed8f 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/Session.java +++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/Session.java
@@ -20,5 +20,5 @@ void disconnect(); - boolean publish(String message); + boolean publish(String message, String eventType); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java index 5b2e0d2..e0ee829 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java +++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
@@ -163,18 +163,25 @@ } @Override - public boolean publish(String messageBody) { + public boolean publish(String messageBody, String eventType) { if (channel == null || !channel.isOpen()) { channel = getChannel(); } if (channel != null && channel.isOpen()) { + String routingKey; Message message = properties.getSection(Message.class); + if (message.routingKey != null && !message.routingKey.isEmpty()) { + // Set routingKey from configuration. + routingKey = message.routingKey; + } else { + routingKey = eventType; + } Exchange exchange = properties.getSection(Exchange.class); try { logger.atFine().log("Sending message."); channel.basicPublish( exchange.name, - message.routingKey, + routingKey, properties.getAMQProperties().getBasicProperties(), messageBody.getBytes(CharEncoding.UTF_8)); return true;
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md index dced3c4..76ba7ce 100644 --- a/src/main/resources/Documentation/config.md +++ b/src/main/resources/Documentation/config.md
@@ -71,7 +71,8 @@ * The priority of message. if not specified, defaults to 0. * `message.routingKey` - * The name of routingKey. This is stored to message property. + * The name of routingKey. This is stored to message property. If not specified, defaults to + the type of the Gerrit event (e.g. "patchset-created", "change-merged"). * `gerrit.name` * The name of gerrit(not hostname). This is your given name to identify your gerrit. @@ -116,7 +117,7 @@ |exchange.name | **gerrit.publish** |message.deliveryMode | 1 |message.priority | 0 -|message.routingKey | *Empty* +|message.routingKey | **event.type** |gerrit.name | *Empty* |gerrit.hostname | *Empty* |gerrit.scheme | **ssh**