Package: yujian
羽箭 Yujian一个异步的 RabbitMQ HTTP API 客户端。A asyncio Rabbitmq HTTP API client.写这个库的初衷是用在 Jiama 的 console 命令中，用于显示 RPC 的服务端和客户端；但找了一圈，却没有发现一个异步且支持Python3 的库，所以写了这个库。Rabbitmq 的安装可以使用 docker 方式，具体参见官网。sudodockerrun-d--namerabbitmq-p5672:5672-p15672:15672rabbitmq:3.10-management在启用“管理插件”运行后，可以在http://server-name:15672/api/查看 Rabbitmq HTTP API 的内容。安装 Installpipinstallwangong接口 APIyujian.api.configRabbitmq HTTP API 接口配置字典，键定义客户端方法名称，值定义方法调用的 API 地址、请求方法、必填项、默认值等，如：'overview':{'uri':'/api/overview','method':'get','option':{'columns':['rabbitmq_version','cluster_name','queue_totals.messages','object_totals.queues',]},},'whoami':{'uri':'/api/whoami','method':'get'},你可以根据需要扩展此配置。client = await Client().init('http://localhost:15672')客户端初始化方法。await client.close()客户端销毁方法。await client.declare_queue(name, vhost=None, **kwargs)namestr - 队列名称vhoststr - 队列所属的虚拟机，默认为/kwargsAny - 其他可用参数，具体参见Rabbitmq HTTP API DOCawait client.list_queue(vhost, columns, **kwargs)vhoststr - 队列所属的虚拟机，默认为/columnslist[str] - 返回结果中包含的列kwargsAny - 其他可用参数await delete_queue(name, vhost)namestr - 队列名称vhoststr - 队列所属的虚拟机await client.declare_exchange(name, type, vhost, **kwargs)namestr - 交换机名称typestr - 交换机类型vhoststr - 交换机所属的虚拟机，默认为/kwargsAny - 其他可用参数，具体参见Rabbitmq HTTP API DOCawait client.declare_binding(source, routing_key, destination, destination_type, vhost, **kwargs)sourcestr - 绑定的源，交换机名称routing_keystr - 绑定的路由键destinationstr - 绑定的终点，交换机或队列的名称destination_typestr - 绑定的重点类型，exchange 或 queuevhoststr - 绑定所属的虚拟机，默认为/kwargsAny - 其他可用参数，具体参见Rabbitmq HTTP API DOCawait client.publish_message(payload, routing_key, properties, exchange, vhost, **kwargs)payloadstr - 消息内容routing_key- 路由键properties- 消息属性exchange- 交换机vhost- 虚拟机kwargs- 其他可用参数，具体参见Rabbitmq HTTP API DOCawait client.await client.invoke(act, **kwargs)actstr - 需要执行的动作，对应 yujian.api.config 中的键kwargsAny - 需要传递的参数client.getattr(method)methodstr - 方法名称，对应 yujian.api.config 中的键借助__getattr__方法，你可以根据Rabbitmq HTTP API DOC的要求任意扩展yujian.api.config，直接以键作为方法名在client对象上调用。示例 Examplefromloguruimportloggerfromyujian.apiimportClientasyncdefmain():c=awaitClient().init('http://192.168.56.109:15672/')r20=awaitc.whoami()r21=awaitc.list_exchange(columns=['name'])r22=awaitc.list_queue(columns=['vhost','name','node','messages'],sort='name',sort_reverse='true')r23=awaitc.list_user()r24=awaitc.get_user(name='guest')r25=awaitc.get_vhost(name='%2F')r26=awaitc.get_permission('guest')r27=awaitc.get_queue('test_queue_2')r30=awaitc.invoke('declare_queue',name='test_queue')r31=awaitc.invoke('list_queue',columns=['vhost','name','node','messages'],sort='name',sort_reverse='true',)r32=awaitc.invoke('delete_queue',name='test_queue')r33=awaitc.invoke('declare_exchange',name='test_exchange',type='direct')r34=awaitc.invoke('get_message',queue='test_queue',count=5,ackmode='ack_requeue_true',encoding='auto',)r35=awaitc.invoke('publish_message',exchange='test_exchange',payload='ko ko ko',routing_key='test_queue',payload_encoding='string',properties={},)r36=awaitc.invoke('declare_binding',source='test_exchange',destination='test_queue',destination_type='queue',routing_key='test_queue',)r37=awaitc.invoke('whoami')awaitc.close()if__name__=='__main__':config={'handlers':[{'sink':sys.stdout,'format':'<green>{time:YYYY-MM-DD at HH:mm:ss}</green>{level}<level>{message}</level>',},],}logger.configure(**config)asyncio.run(main())LicenseMIT© Li zhigang