def serv_forever(self, func):
        """
        启动消费者服务程序
        :param func: 回调函数
        :return:
        """
        # 如果任务队列不为空则声明队列
        if self.task_queue:
            self.ch.queue_declare(
                queue=self.task_queue, durable=self.durable)
        if self.store_queue:
            self.ch.queue_declare(
                queue=self.store_queue, durable=self.durable)

        def callback(ch, method, properties, body):
            """
            amqp的回调函数
            :param ch: 链道
            :param method: 默认的方法
            :param properties: 默认
            :param body: 接收到的数据任务
            :return:
            """
            if self.prefetch_count > 1:
                # 如果任务队列的并发执行数大于1，则启动线程
                # 否则，单线程
                task = _RabbitmqTask(func, (self, body), self.no_ack, ch, method, properties)
                task.start()
            else:
                func(self, body)
                # 任务结束后，确认任务
                if not self.no_ack:
                    self.ch.basic_ack(delivery_tag=self.method.delivery_tag)

        # 声明队列
        self.ch.basic_qos(prefetch_count=self.prefetch_count)
        self.ch.basic_consume(callback, queue=self.task_queue, no_ack=self.no_ack)
        # 启动消费者
        self.ch.start_consuming()