Fix shutdown session
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java
index 03bf85c..2f72470 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java
@@ -119,14 +119,19 @@
   public void disconnect() {
     LOGGER.info(MSG("Disconnecting..."));
     try {
+      if (channel != null) {
+        channel.close();
+      }
+    } catch (Exception ex) {
+      LOGGER.warn(MSG("Error when close channel.") , ex);
+    }
+
+    try {
       if (connection != null) {
         connection.close();
       }
     } catch (Exception ex) {
       LOGGER.warn(MSG("Error when close connection.") , ex);
-    } finally {
-      connection = null;
-      channel = null;
     }
   }
 
@@ -160,8 +165,11 @@
         channel = null;
       }
     } else if (obj instanceof Connection) {
-      LOGGER.info(MSG("Connection disconnected."));
-      connection = null;
+      Connection conn = (Connection) obj;
+      if (conn.equals(connection)) {
+        LOGGER.info(MSG("Connection disconnected."));
+        connection = null;
+      }
     }
   }
 }