oslo_messaging学习小结

1 方法调用流程

1.1 notify.notifier.Notifier.sample

oslo_messaging.notify.notifier.Notifier.sample ->

oslo_messaging.notify.notifier.Notifier._notify ->

oslo_messaging.notify.messaging.MessagingV2Driver.notify ->

oslo_messaging.transport.NotificationTransport._send_notification ->

oslo_messaging._drivers.impl_rabbitmq.RabbitDriver.send_notification ->

oslo_messaging._drivers.impl_rabbitmq.RabbitDriver.send_notification ->(方法用父类的)

_drivers.impl_rabbitmq.RabbitDriver._send ->(从pool get一个connection,是impl_rabbitmq的connection,调connection的notify_send方法,pool好像在transport还是driver初始化时赋值)

_drivers.impl_rabbitmq.Connection.notify_send ->

_drivers.impl_rabbitmq.Connection._ensure_publishing ->(装饰方法实际调用Connection._publlish_and_create_default_queue,后面会调到,此处调方法用了偏函数,固定部分入参,如exchange,routing_key等,然后重新返回方法)

_drivers.impl_rabbitmq.Connection.ensure ->

_drivers.impl_rabbitmq.Connection._publish ->

kombu.messaging:Producer._publish -> (producer在kombu.connection:Connection.autoretry装饰时实例化,具体在_set_current_channel中实例化,autoretry中为impl_rabbit.Connection._publlish_and_create_default_queue方法传入channel,为kombu.connection:Connection.default_channel)

amqp.channel:Channel.basic_publish ->

amqp.channel._basic_publish ->

amqp.channel.send_method ->

amqp.connection.Connection.frame_writer,最后该方法调so库struct的pack_info发送消息

1.2 小结

库调用顺序 oslo_messaging -> kombu -> amqp

作用:

oslo_messaging提供统一transport, driver等接口

kombu:实例化connection, transport等

amqp:提供具体发送消息底层库的接口和调用

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值