【问题标题】:SelectConnection does not connect to rabbitmqSelectConnection 没有连接到rabbitmq
【发布时间】:2019-07-08 20:07:14
【问题描述】:

我是 Python 编程的新手,所以我尝试使用 pika 消耗两个 rabbitmq 队列,但是使用 SelectConnection 会引发异常 IndexError: tuple index out of range An invalid channel number has been specified,但是如果我使用 BlockingConnection 我能够成功使用队列。 一些信息: 1 - 我正在使用 pika 网站异步示例 2 - 我的 RabbitMQ 正在使用 docker hub 官方图片中的 docker 运行

这是我的代码:

import pika

if __name__ == '__main__':
    def callback(channel, method, properties, body):
        print(body)
        channel.basic_ack(delivery_tag=method.delivery_tag)

    def on_open(connection):
        channel = connection.channel(on_channel_open)


    def on_channel_open(channel):
        print("on channel open")
        channel.basic_consume(callback, queue='hello')
        channel.basic_consume(callback, queue='poc')


    parameters = pika.URLParameters('amqp://guest:guest@localhost:5672/%2F')
    connection = pika.SelectConnection(parameters=parameters,on_open_callback=on_open)

    try:
        connection.ioloop.start()
    except KeyboardInterrupt:
        connection.close()

我做错了什么?

【问题讨论】:

    标签: python rabbitmq pika python-pika


    【解决方案1】:

    您使用的是旧版本的文档,请参考latest 网站:

    https://pika.readthedocs.io/en/latest/examples.html

    您需要添加on_open_callback:

    def on_open(connection):
        channel = connection.channel(on_open_callback=on_channel_open)
    

    否则第一个参数是通道号。

    你也可以通过查看 Pika 的源码找到正确的用法:

    https://github.com/pika/pika

    这将在 Pika 的下一个版本中解决,1.1.0

    【讨论】:

    • 谢谢!只是缺少on_open_callback。现在按预期工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2016-07-22
    • 2018-07-07
    • 2012-11-26
    相关资源
    最近更新 更多