Open hank9999 opened 1 year ago
add simple RabbitMQ support
kook -> khl.py 生产者 (解析数据) -> RabbitMQ -> khl.py 消费者 (处理数据)
传递过程中 从生产者->消费者端数据为避免明文传输,进行AES加密
from khl import RabbitMQ, Bot, Cert # 注释项代表有默认值 # Bot 的 compress 参数会影响 RabbitMQ 消息传递中是否压缩 rabbitmq = RabbitMQ( # host='127.0.0.1', # RabbitMQ 服务地址 # port=5672, # RabbitMQ 服务端口 # queue='bot', # RabbitMQ 队列名称 # qos=10, # 速率控制 (该选项控制每次从服务器抓取多少条消息, 控制本地queue内消息数量) # heartbeat=30, # 心跳时间 (RabbitMQ 协议规定每二分之一心跳时间发一次心跳 一般5-60 不推荐小于5) login='bot', # 强制填写 认证信息 password='password', # 强制填写 认证信息 # key='xxxxxx', # 可由 login+password 生成 # key_digits=16, # 密钥位数 16位为AES128 24位为AES192 32位为AES256 # is_producer=False # 是否为生产者 ) cert = Cert( token='xxx', # is_rabbitmq_receiver=True # 若在 Bot 示例中没有传入 cert, 可由 rabbitmq 参数判断生成 ) --- # 生产者 # 注意 作为生产者时, RabbitMQ 中的 is_producer 为 True rabbitmq = RabbitMQ(login='bot', password='password', is_producer=True) bot = Bot('token', rabbitmq=rabbitmq) # 注意 作为生产者时, cert 中的 is_rabbitmq_receiver 不填 或 False bot = Bot( cert=Cert(token='xxx', verify_token='xxx', encrypt_key='xxx'), rabbitmq=rabbitmq ) --- # 消费者 # 注意 作为消费者时, RabbitMQ 中的 is_producer 不填 或 False rabbitmq = RabbitMQ(login='bot', password='password') bot = Bot('token', rabbitmq=rabbitmq) # 注意 作为消费者时, 若传入 cert, 则 cert 中的 is_rabbitmq_receiver 为 True bot = Bot( cert=Cert(token='xxx', is_rabbitmq_receiver=True), rabbitmq=rabbitmq ) --- # 最后启动 bot.run() # await bot.start()
有点太大了,推荐是单独抽出一个文件夹/模块出来,比较整洁 单独抽出来的话层级也比较高(现在这个写法感觉就像是混在了基础功能层里,如果改成做在基础功能层之上、利用基础功能层的话会比较好)
有点太大了,推荐是单独抽出一个文件夹/模块出来,比较整洁
单独抽出来的话层级也比较高(现在这个写法感觉就像是混在了基础功能层里,如果改成做在基础功能层之上、利用基础功能层的话会比较好)
好的,我会再修改一下
add simple RabbitMQ support
kook -> khl.py 生产者 (解析数据) -> RabbitMQ -> khl.py 消费者 (处理数据)
传递过程中 从生产者->消费者端数据为避免明文传输,进行AES加密