我正在从事消费者客户项目。 我必须创建一个客户端类,一个消费者读者类,一个消费者作家类,一个配置类和一个主类。
这应该像main一样具有所有其他类的所有控制逻辑。
我迷上了消费者阅读器类。 客户端类创建具有pika连接的客户端对象,并打开一个通道。
我想在我的阅读器类中使用该对象,我想在该类中执行所有操作,例如声明交换队列消耗消息。
但是它表示尝试运行阅读器类时通道未打开。
我已经尝试过签入其他帖子,但没有任何帮助
class Consumer_client (object):
def __init__(self, user_id, password, url, port):
self.user_id = user_id
self.password = password
self.url = url
self.port = port
self.should_reconnect = False
self.connection = None
self.closing = False
self.channel = None
def connect(self):
credentials = pika.PlainCredentials(self.user_id, self.password)
parameters = pika.ConnectionParameters(self.url, self.port, '/', credentials)
return pika.SelectConnection(
parameters = parameters,
on_open_callback=self.on_connection_open, # These are the different arguments of select connection
on_open_error_callback=self.on_connection_open_error,
on_close_callback=self.on_connection_closed)
#The below reader class is there in another file
class Consumer_reader(Consumer_client):
EXCHANGE = 'Exchange'
EXCHANGE_TYPE = 'topic'
QUEUE = 'Queue'
connected = False
def __init__(self, exchange, queue, routing_key, user_id, password, url, port):
# Login details
self.user_id = user_id
self.password = password
self.url = url
self.port = port
self.exchange = exchange
self.queue = queue
self.routing_key = routing_key
self._channel = None
self.was_consuming = False
self.consuming = False
self._connection = None
self.prefetch_count = 500
self.cfg = super().__init__(user_id, password, url, port)
def run(self):
self._connection = super().connection
self._channel = super().channel
self.channel_open()
self._connection.ioloop.start()
def channel_open(self):
LOGGER.info('Channel opened')
#super().add_on_channel_close_callback()
self.setup_exchange()
问题是我无法使它按照Consumer_client类中创建的连接和通道来使用Consumer_reader类
消费者阅读器类应该能够在连接的帮助下完成所需的事情,并且通道由消费者客户端类创建。