Implement connection monitoring feature without external class
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index e081ca1..419e8d8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -18,14 +18,12 @@
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.AbstractModule;
-import com.google.inject.assistedinject.FactoryModuleBuilder;
class Module extends AbstractModule {
@Override
protected void configure() {
bind(AMQPSession.class);
bind(Properties.class);
- bind(ConnectionMonitorTask.class);
DynamicSet.bind(binder(), ChangeListener.class).to(RabbitMQManager.class);
DynamicSet.bind(binder(), LifecycleListener.class).to(RabbitMQManager.class);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
index 8121d4a..9096e00 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/RabbitMQManager.java
@@ -10,6 +10,7 @@
import org.slf4j.LoggerFactory;
import java.util.Timer;
+import java.util.TimerTask;
public class RabbitMQManager implements ChangeListener, LifecycleListener {
@@ -19,19 +20,24 @@
private final AMQPSession session;
private final Gson gson = new Gson();
private final Timer monitorTimer = new Timer();
- private final ConnectionMonitorTask monitorTask;
@Inject
- public RabbitMQManager(Properties properties, AMQPSession session, ConnectionMonitorTask monitorTask) {
+ public RabbitMQManager(Properties properties, AMQPSession session) {
this.properties = properties;
this.session = session;
- this.monitorTask = monitorTask;
}
@Override
public void start() {
session.connect();
- monitorTimer.schedule(monitorTask, MONITOR_FIRATTIME_DELAY, properties.getConnectionMonitorInterval());
+ monitorTimer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ if (!session.isOpen()) {
+ session.connect();
+ }
+ }
+ }, MONITOR_FIRATTIME_DELAY, properties.getConnectionMonitorInterval());
}
@Override