diff --git a/coolamqp/cluster.py b/coolamqp/cluster.py
index 8ac7270d7df099312fede8b0a9f532e0d72f18be..bd85db9720f9283e569e98ac38a5e92c7126276f 100644
--- a/coolamqp/cluster.py
+++ b/coolamqp/cluster.py
@@ -66,6 +66,8 @@ class Cluster(object):
         self.backend = backend
         self.node_to_connect_to = itertools.cycle(nodes)
 
+        self.connected = False      #: public, is connected to broker?
+
         from .handler import ClusterHandlerThread
         self.thread = ClusterHandlerThread(self)
 
diff --git a/coolamqp/handler.py b/coolamqp/handler.py
index c74581b337b8b642a2b8c25d5b3aaef55dfd7245..b6cb3c7a22648953d4fa302033acb64f8a67b441 100644
--- a/coolamqp/handler.py
+++ b/coolamqp/handler.py
@@ -65,6 +65,7 @@ class ClusterHandlerThread(threading.Thread):
             except ConnectionFailedError as e:
                 # a connection failure happened :(
                 logger.warning('Connecting to %s failed due to %s', node, repr(e))
+                self.cluster.connected = False
                 if self.backend is not None:
                     self.backend.shutdown()
                     self.backend = None # good policy to release resources before you sleep
@@ -78,6 +79,7 @@ class ClusterHandlerThread(threading.Thread):
                 else:
                     exponential_backoff_delay = 60
             else:
+                self.cluster.connected = True
                 self.event_queue.put(ConnectionUp())
                 break   # we connected :)
 
@@ -140,6 +142,7 @@ class ClusterHandlerThread(threading.Thread):
 
             except ConnectionFailedError as e:
                 logger.warning('Connection to broker lost')
+                self.cluster.connected = True
                 self.event_queue.put(ConnectionDown())
                 self._reconnect()