pika详解(三)SelectConnection及其他Connection
pika详解(三)SelectConnection及其他Connection
pika除了block connection外还提供了其他非阻塞式的连接方式
SelectConnection
定义如下:
class SelectConnection(BaseConnection):
    def __init__(
            self,  # pylint: disable=R0913
            parameters=None,
            on_open_callback=None,
            on_open_error_callback=None,
            on_close_callback=None,
            custom_ioloop=None,
            internal_connection_workflow=True):
        """Create a new instance of the Connection object.
        :param pika.connection.Parameters parameters: Connection parameters
        :param callable on_open_callback: Method to call on connection open
        :param None | method on_open_error_callback: Called if the connection
            can't be established or connection establishment is interrupted by
            `Connection.close()`: on_open_error_callback(Connection, exception).
        :param None | method on_close_callback: Called when a previously fully
            open connection is closed:
            `on_close_callback(Connection, exception)`, where `exception` is
            either an instance of `exceptions.ConnectionClosed` if closed by
            user or broker or exception of another type that describes the cause
            of connection failure.
        :param None | IOLoop | nbio_interface.AbstractIOServices custom_ioloop:
            Provide a custom I/O Loop object.
        :param bool internal_connection_workflow: True for autonomous connection
            establishment which is default; False for externally-managed
            connection workflow via the `create_connection()` factory.
        :raises: RuntimeError
        """
        if isinstance(custom_ioloop, nbio_interface.AbstractIOServices):
            nbio = custom_ioloop
        else:
            nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())
        super(SelectConnection, self).__init__(
            parameters,
            on_open_callback,
            on_open_error_callback,
            on_close_callback,
            nbio,
            internal_connection_workflow=internal_connection_workflow)
    @classmethod
    def create_connection(cls,
                          connection_configs,
                          on_done,
                          custom_ioloop=None,
                          workflow=None):
        """Implement
        :py:classmethod:`pika.adapters.BaseConnection.create_connection()`.
        """
        nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())
        def connection_factory(params):
            """Connection factory."""
            if params is None:
                raise ValueError('Expected pika.connection.Parameters '
                                 'instance, but got None in params arg.')
            return cls(
                parameters=params,
                custom_ioloop=nbio,
                internal_connection_workflow=False)
        return cls._start_connection_workflow(
            connection_configs=connection_configs,
            connection_factory=connection_factory,
            nbio=nbio,
            workflow=workflow,
            on_done=on_done)SelectConnection继承BaseConnection,只是重写了create_connection
在create_connection 中可以看到:
nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())
说明这个类实现的 select IO
提供的函数、方法解析:
- add_on_close_callback
关闭时候的回调, callback定义 callback(pika.connection.Connection,exception)
- add_on_connection_blocked_callback
阻塞时候回调 回调定义: callback(connection, pika.frame.Method)
- add_on_connection_unblocked_callback - 解除阻塞时候回调 
- add_on_open_callback - 打开时回调 
- add_on_open_error_callback 
打开异常时候回调
- basic_nack
- channel(channel_number = None*,*on_open_callback = None )
建立通道
channel_number(int) - 要使用的通道编号,默认为下一个可用通道编号。
 on_open_callback(callable)
- close
- consumer_cancel_notify
定服务器是否支持活动连接上的使用者取消通知 返回bool值
- create_connection(connection_configs, on_done, custom_ioloop=None, workflow=None)
建立连接
- exchange_exchange_bindings - 返回值bool 是否支持交换机修改 
- ioloop 
- is_closed 
- is_closing 
- is_open 
- publisher_confirms - 是否支持发布确认 
Tornado Connection Adapter
方法可参考基类BaseConnection
略
Twisted Connection Adapter
方法可参考基类BaseConnection
略
pika详解(三)SelectConnection及其他Connection的更多相关文章
- pika详解 (一)
		pika详解 (一) 本文链接:https://blog.csdn.net/comprel/article/details/94592316 pika pika处理消息可以简单分为以下几个步骤: 我们 ... 
- pika详解(四) channel 通道
		pika详解(四) channel 通道 本文链接:https://blog.csdn.net/comprel/article/details/94662394 版权  channel通道 通道 ... 
- pika详解(五)登录认证及connectionParameters
		pika详解(五)登录认证及connectionParameters 本文链接:https://blog.csdn.net/comprel/article/details/94662916 版权 pi ... 
- pika详解(二) BlockingConnection
		pika详解(二) BlockingConnection 本文链接:https://blog.csdn.net/comprel/article/details/94592348 版权 Blocki ... 
- .NET DLL 保护措施详解(三)最终效果
		针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ... 
- Android 之窗口小部件详解(三)  部分转载
		原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ... 
- WebSocket安卓客户端实现详解(三)–服务端主动通知
		WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ... 
- logback -- 配置详解 -- 三 -- <encoder>
		附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ... 
- python设计模式之装饰器详解(三)
		python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ... 
随机推荐
- Dubbo学习笔记(一) 基础知识HelloWorld
			Dubbo是由阿里巴巴研发出的一款基于Java实现的RPC框架,现由Apache进行维护管理,笔记中使用zookeeper作为注册中心,dubbo+zookeeper环境安装教程:https://ww ... 
- JMeter日志查看
- composer PSR规范
			什么是PSR PSR 是 PHP Standard Recommendations (PHP 推荐标准)的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准. PHP FI ... 
- 简谈Mysql悲观锁和乐观锁
			悲观锁: 其实理解起来非常简单,当数据被外界修改持保守态度,包括自身系统当前的其他事务,以及来自外部系统的事务处理,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁 ... 
- vim 中文乱码解决
			问题如下: 在vim中编辑一个中文文本时 出现中文乱码情况 问题解决: 修改vimrc的脚本配置 编辑~/.vimrc文件,加上如下几行即可: set fileencodings=utf-8,ucs- ... 
- 【转】【linux系统】nacos + confd配置nginx
			为什么要支持confd,老的应用配置管理模式是启动时读取配置文件,然后重新读取配置文件需要应用重启.一般的配置管理系统都是代码侵入性的,应用接入配置管理系统都需要使用对应的SDK来查询和监听数据的变更 ... 
- 利用Xposed Hook打印Java函数调用堆栈信息的几种方法
			本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374 在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看 ... 
- hdu4642博弈(矩阵)
			题意: 给一个01矩阵,每次可以选择1的格子,选择之后以他为左上角的矩阵全都取反,两个人轮班取,不能取的人输. 思路: 博弈的题目,结论是右下角是0就输,1就赢,原因可以这么 ... 
- 【python】Leetcode每日一题-直方图的水量(接雨水)
			[python]Leetcode每日一题-直方图的水量(接雨水) [题目描述] 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1. 上面是由数组 ... 
- mysql-创建用户并授权,设置允许远程连接
			一.创建用户并授权 1.登录mysql mysql -u root -q 2.创建数据库 create database dbdata;//以创建dbdata为例 3.创建用户 创建user01,只能 ... 
