diff --git a/CHANGELOG.md b/CHANGELOG.md
index dcbdac99205725b2db2a1f0a847db39e2cfeb091..406e329370452579b7ea7160ad595ffe222683be 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
 # v1.2.2
 
-* _TBA_
+* bugfix release: don't bind if queue is topic
 
 # v1.2.1
 
diff --git a/coolamqp/__init__.py b/coolamqp/__init__.py
index 6840c94f650a3ec9a0003af525059d1d365de192..923b98792ed781575433329d19308055ba477fb3 100644
--- a/coolamqp/__init__.py
+++ b/coolamqp/__init__.py
@@ -1 +1 @@
-__version__ = '1.2.2_a1'
+__version__ = '1.2.2'
diff --git a/coolamqp/attaches/consumer.py b/coolamqp/attaches/consumer.py
index 96e8387311b55cd205e3ebcc8bb2fa69ed45c1d6..dc48e075ad5e403cdcbcec7a4b076b2beea48fd8 100644
--- a/coolamqp/attaches/consumer.py
+++ b/coolamqp/attaches/consumer.py
@@ -408,14 +408,15 @@ class Consumer(Channeler):
 
             # We need any form of binding.
             if self.queue.exchange is not None:
-                self.method_and_watch(
-                    QueueBind(
-                        self.queue.name,
-                        self.queue.exchange.name.encode('utf8'),
-                        b'', False, []),
-                    QueueBindOk,
-                    self.on_setup
-                )
+                if self.queue.exchange.type != 'topic':
+                    self.method_and_watch(
+                        QueueBind(
+                            self.queue.name,
+                            self.queue.exchange.name.encode('utf8'),
+                            b'', False, []),
+                        QueueBindOk,
+                        self.on_setup
+                    )
             else:
                 # default exchange, pretend it was bind ok
                 self.on_setup(QueueBindOk())