连接队列

队列的连接有两种方法,一种是通过ConnectionParameters定义连接参数,一种是通过URLParameters定义连接URL串。

使用URL串来连接消息队列是最简单的创建连接的方法,类URLParameters在构建的时候接收一个URL字符串作为参数。AMQP的连接串格式为amqp://用户名:密码@主机:端口/<虚拟主机>[?查询串],默认的虚拟主机/在连接时应使用%2F代替。

而使用ConnectionParameters定义连接参数就明确许多。类ConnectionParameters可以接收以下常用参数。

  • blocked_connection_timeout,阻塞连接超时时间。
  • channel_max,最大允许Channel数量。
  • connection_attempts,尝试连接的套接字号。
  • credentials,连接密码。
  • frame_max,AMQP的最大帧大小。
  • heartbeat,心跳超时时间。
  • host,消息队列主机。
  • locale,传递给中间件的本地化信息。
  • retry_delay,套接字连接重试间隔秒数。
  • socket_timeout,套接字超时时间。
  • ssl_options,SSL连接配置,使用纯文本或者pika.SSLOptions实例。
  • port,消息队列端口。
  • virtual_port,虚拟端口。
  • tcp_options,TCP配置。

ConnectionParameters类构建函数中的credentials参数需要使用PlainCredentials类实例来定义。PlainCredentials类在创建的时候接收两个参数,一个是用户名,另一个是明文密码。

有了连接参数实例,就可以来连接消息队列了。Pika提供的所有消息队列连接类都继承自pika.connection.Connection类,所以构造方法接收的参数基本类似,常用参数有以下这些。

  • parameters,连接参数。
  • on_open_callback,连接建立时调用的回调函数。
  • on_open_error_callback,建立连接失败时调用的回调函数。
  • on_close_callback,连接关闭时调用的回调函数。

当消息队列连接建立之后就可以创建Channel来进行消息的发送和消费了。如果不再需要消息队列的连接,需要使用.close()方法关闭连接。.close()方法可以接收两个参数,reply_code用于指定关闭连接时的代码,默认为200;replay_text用于指定连接关闭的原因,默认是"Normal shutdown"