pika之上的一个方便层,用于rabbitmq主题交换。
pikatopic的Python项目详细描述
pika topic-pika上的一个方便层,用于rabbitmq主题交换
pika是与rabbitmq交互的一个很好的通用库。 服务器。pikatopic是一个简单、有限的接口,可用于 您只需要使用主题交换发送或接收消息。
另外,pikatopic将在发送和 接收数据。
有关更多用法,请参见https://github.com/AnimationMentor/pikatopic 例子。
配置
您可能需要设置主机名以连接到RabbitMQ 服务器。用户名、密码和交换都设置为默认值 它适用于一般的服务器安装。
默认值:
- 主机是localhost或PIKATOPIC_HOST可环境变量,如果是 设置
- 用户名是guest或PIKATOPIC_USERNAMEenvariable if 已设置
- 密码是guest或PIKATOPIC_PASSWORD环境变量,如果 已设置
- 交换是amq.topic或PIKATOPIC_EXCHANGE可环境的,如果 已设置
通过将这些参数中的任何一个传递给 PikaTopic类初始化器,或者您可以在模块中更改它们 平铺:
import pikatopic pikatopic.DEFAULT_USERNAME = 'otheruser' pikatopic.DEFAULT_PASSWORD = 'secrt' pikatopic.DEFAULT_HOST = '172.17.0.2' pikatopic.DEFAULT_EXCHANGE = 'monster'
示例
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。
谢谢,阿泰拉!
这项工作是由阿泰拉资助的。