은 내가 RabbitMQ 소비자로 새앙 토끼 트위스트 연결을 사용하고, 여기에 내 코드입니다 :pika를 위해 꼬인 연결로 소비자를 다시 연결하는 방법은 무엇입니까?
@defer.inlineCallbacks
def run(connection):
queue_name = 'aaa'
channel = yield connection.channel()
queue = yield channel.queue_declare(queue=queue_name, auto_delete=False, exclusive=False)
yield channel.queue_bind(exchange='amq.direct',queue=queue_name,routing_key=queue_name)
yield channel.basic_qos(prefetch_count=1)
queue_object, consumer_tag = yield channel.basic_consume(queue=queue_name,no_ack=False)
logger.info('[room server]start consume queue %s', queue_name)
l = task.LoopingCall(read, queue_object)
l.start(0.1)
@defer.inlineCallbacks
def read(queue_object):
ch,method,properties,body = yield queue_object.get()
try:
data = json.loads(body)
head_code = data['head_code']
openid = data['openid']
message_content = data['message_content']
conn_id = -1
try:
conn_id = data['conn_id']
except:
pass
message_dispatcher(head_code, openid, message_content, conn_id)
yield ch.basic_ack(delivery_tag=method.delivery_tag)
except ValueError as e:
logger.error('[error!]error body %s' % body)
yield ch.basic_ack(delivery_tag=method.delivery_tag)
credentials = pika.PlainCredentials(config.RABBITMQ_USERNAME, config.RABBITMQ_PASSWD)
parameters = pika.ConnectionParameters(credentials=credentials)
cc = protocol.ClientCreator(reactor, twisted_connection.TwistedProtocolConnection, parameters)
def got_error(failure, d):
logger.error(failure)
d = cc.connectTCP(config.RABBITMQ_HOST, config.RABBITMQ_PORT)
def start():
d = cc.connectTCP(config.RABBITMQ_HOST, config.RABBITMQ_PORT)
d.addCallback(lambda protocol: protocol.ready)
d.addCallback(run)
d.addErrback(got_error, d)
연결 나누기, 재 연결 프로세스가 작동하지 않을 때 내 문제는 다음과 같습니다
어떻게 만들 재 연결 작업?
나는 코드 만 예외가 발생했습니다 , 줄 292 in connectTCP bindAddress = bindAddress) 파일 "/Library/Python/2.7/site-packages/twisted/internet/protocol.py", 줄 274, _connect에 있음 self.reactor, self.protocolClass (* self .args, ** self.kwargs), d) TypeError : __init __()은 정확히 2 개의 인수 (주어진 3 개)를 취합니다. –