跳转到主要内容

RabbitMQ通信的抽象接口

项目描述

b-rabbit-icon https://img.shields.io/pypi/v/b-rabbit.svg https://img.shields.io/travis/nidhaloff/b_rabbit.svg https://readthedocs.org/projects/b-rabbit/badge/?version=latest PyPI - Python Version PyPI - Wheel https://pepy.tech/badge/b-rabbit Twitter URL

RabbitMQ无烦恼。

b-rabbit 是一个RabbitMq客户端库,旨在使与RabbitMQ接口更简单。它在大型项目中尤其有用,在这些项目中必须编写大量的样板代码。

我是在参与一个大型微服务项目时开始这个项目的,该项目由一个大型团队开发。之后,我决定开源这个项目。

特性

  • 实现了所有RabbitMQ消息模式。

  • 提供了一个易于使用的高级API(请查看示例)

  • 线程安全

何时应该使用它

  • 如果您在其他非线程安全库(比如我)遇到问题

  • 如果您想通过使用高级API快速开发

  • 如果您不想编写很多代码并节省很多时间

  • 如果您想使用多线程

快速使用

导入库

from b_rabbit import BRabbit

创建一个提供全局RabbitMQ连接的父实例

rabbit = BRabbit(host='localhost', port=5672)

现在,只需一行代码即可发布消息

publisher = rabbit.EventPublisher(b_rabbit=rabbit,
                                  publisher_name='pub').publish(routing_key='testing.test',
                                                                payload='Hello from publisher')

或者,如果您想订阅并监听某个特定主题

 def callback(msg):
    # do something with the received msg from the publisher
    print(f"msg received: {msg}")

# subscribe and run a listener in a thread

subscriber = rabbit.EventSubscriber(
                                b_rabbit=rabbit,
                                routing_key='testing.test',
                                publisher_name='pub',
                                event_listener=callback).subscribe_on_thread()

使用RPC的高级使用方法

  • 任务请求者

from b_rabbit import BRabbit


def taskResponseListener(body):
    print('Task Response received')
    print(str(body))


rabbit = BRabbit(host='localhost', port=5672)
taskRequesterSynchron = rabbit.TaskRequesterSynchron(b_rabbit=rabbit,
                                                     executor_name='test',
                                                     routing_key='testing.test',
                                                     response_listener=taskResponseListener)

taskRequesterSynchron.request_task('msg from requester')
rabbit.close_connection()
  • 任务响应者(服务器)

from b_rabbit import BRabbit
import time

rabbit = BRabbit(host='localhost', port=5672)


def taskListener(server, body):
    print('Task Request received')
    print(str(body))
    time.sleep(5)
    server.send_return(payload="return this value to requester")


taskExecuter = rabbit.TaskExecutor(b_rabbit=rabbit,
                                   executor_name='test',
                                   routing_key='testing.test',
                                   task_listener=taskListener).run_task_on_thread()

进一步

查看示例文件夹以获取更多信息。b_rabbit还实现了远程过程调用(RPC)模式

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

b_rabbit-1.2.5.tar.gz (17.2 kB 查看散列)

上传

构建分布

b_rabbit-1.2.5-py2.py3-none-any.whl (9.3 kB 查看散列)

上传 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面