'Bind `queue` to `exchange` with `routing key`.'

def queue_bind(self, queue, exchange=None, routing_key=u'', arguments=None, **kwargs):

    exchange = (exchange or u'amq.direct')
    if self.state.has_binding(queue, exchange, routing_key):
        return
    self.state.binding_declare(queue, exchange, routing_key, arguments)
    table = self.state.exchanges[exchange].setdefault(u'table', [])
    meta = self.typeof(exchange).prepare_bind(queue, exchange, routing_key, arguments)
    table.append(meta)
    if self.supports_fanout:
        self._queue_bind(exchange, *meta)
