pika之上的一个方便层,用于rabbitmq主题交换。

pikatopic的Python项目详细描述


pika topic-pika上的一个方便层,用于rabbitmq主题交换

pika是与rabbitmq交互的一个很好的通用库。 服务器。pikatopic是一个简单、有限的接口,可用于 您只需要使用主题交换发送或接收消息。

另外,pikatopic将在发送和 接收数据。

有关更多用法,请参见https://github.com/AnimationMentor/pikatopic 例子。

配置

您可能需要设置主机名以连接到RabbitMQ 服务器。用户名、密码和交换都设置为默认值 它适用于一般的服务器安装。

默认值:

  • 主机是localhostPIKATOPIC_HOST可环境变量,如果是 设置
  • 用户名是guestPIKATOPIC_USERNAMEenvariable if 已设置
  • 密码是guestPIKATOPIC_PASSWORD环境变量,如果 已设置
  • 交换是amq.topicPIKATOPIC_EXCHANGE可环境的,如果 已设置

通过将这些参数中的任何一个传递给 PikaTopic类初始化器,或者您可以在模块中更改它们 平铺:

import pikatopic

pikatopic.DEFAULT_USERNAME = 'otheruser'
pikatopic.DEFAULT_PASSWORD = 'secrt'
pikatopic.DEFAULT_HOST = '172.17.0.2'
pikatopic.DEFAULT_EXCHANGE = 'monster'

皮卡图书馆

pikatopic依赖于pika libary。

示例

from pikatopic import PikaTopic

with PikaTopic(host='172.17.0.2') as pt:
    pt.sendData(
        "project.new",
        {
        'project_id':"12345-12345",
        'name':"The Amazing Adventures of Sausage Farts The Dog",
        'creator_id':"676867-45657",
        },
    )
from pikatopic import PikaTopic

def handler(routing_key, message, message_data):
    if message_data:
        print("%r data=%r" % (routing_key, message_data))
    else:
        print("%r text=%r" % (routing_key, message))
    return True


with PikaTopic(host='172.17.0.2') as pt:
    pt.listen(handler, ['#'])

参考值

这个库提供了一个类PikaTopic,可以用于 发送和接收消息。

除非像上面的示例那样使用with构造,否则必须 在send...()close()之前和之后调用open()close()listen()函数。

发送
sendText(routing_key (string), message (string))
sendData(routing_key (string), message (dict or list))

sendData方法将消息转换为json字符串并设置 application/json的消息内容类型属性。

接收
listen(handler (function), binding_keys (list of strings))

listen方法进入一个通常不 返回。

它接受一个处理函数,对接收到的每个消息调用该函数。

handler(routing_key, message_text, message_data)

message_text包含邮件的原始文本。如果消息是 json编码,然后message_data包含解码的dict否则 它被设置为None

如果处理程序返回一个false值,listen()循环将返回。

无服务器测试

no_rabbit_server=True传递给类初始化器以在没有 正在连接到服务器。

这可能对测试或转换有用。

您可能还需要设置verbose=True

冗长

verbose=True传递给类初始化器以获取发送到的消息 由listen()和send…(发送…)函数执行stdout。

谢谢,阿泰拉!

这项工作是由阿泰拉资助的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中的并发监视器和同步关键字   java试图删除学生,但不断出错   java JSONObject到文档   java在不使用Access Bean的情况下获取类中的属性值   安卓和windows phone之间的java共享数据库   java程序不断终止,我不知道为什么   java测量时间并不能证实LinkedList的优势   java InputStream从串行端口读取数据   Jersey 2.29中带有自定义注释的java注入方法参数   JAVA中的异常理解throw关键字   java ORMLite OneToOne关系   使用Play框架和Java解析Json数组   java对象编程中的文件错误   netbeans 8如何安装Java Darcula外观?   java“sort”属性做什么?   是否有支持移位插入的列表实现(Java)?   java Springboot安全性:登录期间密码不匹配   使用NetClient和JsonParser的java连接到服务器只解析第一条消息   java在使用XMLStreamWriter写入数据时将$或欧元等字符写入unicode格式