Python未通知消费者Kombitrabbu消息(队列.get有效)

2024-05-16 21:09:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我运行以下代码,传递给consumer的回调(测试)永远不会被触发。在

但是,如果我继续关注rabbitmqgui,我确实看到消息被检索(但没有被确认)。因此,消费者似乎收到了消息,但没有将其传递给我的回调。如果我将no_ack设置为true,消息将从队列中消失,同样不调用回调。在

hn = "..."
usr = "..."
pwd = "..."
vh = "/"
port = 5672
rkey = "some.routing.key"
qname = "some-queue-name"
exchangeName = "MyExchange"

connection = BrokerConnection(hostname=hn,
                              userid=usr,
                              password=pwd,
                              virtual_host=vh,
                              port=port)

connection.connect()
ch = connection.channel()

# Create & the exchange
exchange = Exchange(name=exchangeName,
              type="topic",
              channel=ch,
              durable=True)

exchange.declare()

# Temporary channel
ch = connection.channel()

# Create the queue to feed from
balq = Queue(name=qname,
              exchange=exchange,
              durable=True,
              auto_delete=False,
              channel=ch,
              routing_key=rkey)        

# Declare it on the server
balq.declare();

def test(b,m):
    print '** Message Arrived **'

# Create a consumer
consumer = Consumer(channel=connection.channel(),
                    queues=balq,
                    auto_declare=False,
                    callbacks = [test]
                    )

# register it on the server
consumer.consume(no_ack=False);

print 'Waiting for messages'
while(True):
    pass

但是,以下代码确实正常工作(我可以成功获取并确认消息):

^{pr2}$

但关键是保持异步。所以我的回拨一定出了问题。。在


Tags: the代码namefalsetrue消息exchangeconsumer