func (channel *Channel) basicConsume(method *amqp.BasicConsume) *amqp.AMQPError { var classId, methodId = method.MethodIdentifier() // Check queue if len(method.Queue) == 0 { if len(channel.lastQueueName) == 0 { return amqp.NewSoftError(404, "Queue not found", classId, methodId) } else { method.Queue = channel.lastQueueName } } // TODO: do not directly access channel.conn.server.queues var queue, found = channel.conn.server.queues[method.Queue] if !found { // Spec doesn't say, but seems like a 404? return amqp.NewSoftError(404, "Queue not found", classId, methodId) } if len(method.ConsumerTag) == 0 { method.ConsumerTag = util.RandomId() } amqpErr := channel.addConsumer(queue, method) if amqpErr != nil { return amqpErr } if !method.NoWait { channel.SendMethod(&amqp.BasicConsumeOk{method.ConsumerTag}) } return nil }