利用发布/订阅来避免紧耦合

发布订阅模式(pub/sub)是一种设计模式,消息发布者将消息按类别发布,不同订阅者根据自身需求去订阅所需的消息。这种设计思路主要是考虑到功能的解耦与更为动态的网络拓扑。

对于发布者和订阅者而言,它们并不感知具体的网络拓扑,甚至不必去了解对方的存在形式。大多数情况下,会有一个中间代理人(broker)的角色来处理发布者和订阅者之间消息频道的协调工作。发布者将消息推至中间代理人处,对应的,订阅者从中间代理人处订阅消息。而中间代理人通常是一个消息队列(Message Queue),少数情况下,Redis也可以充当代理人的角色。常见的MQ有:RabbitMQ, RocketMQ,Kafka等等。

Python中也有相关的模块(blinker, python-message等)实现了较为健全的发布/订阅功能。

import message
def foo(msg):
    print 'I get a message from pub:{msg}!'.format(msg=msg)
msg.sub('msg', foo)
msg.pub('msg', 'Eureka')

#output
I get a message from pub:Eureka!

上面是一个最简单的例子。除此之外,python-massage还对订阅者支持取消订阅功能,和在上下文中进行终止消息传递的操作。内部通过队列来保证消息的全局顺序,但在sub时进行插队。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,218评论 25 709
  • 一、 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能...
    步积阅读 57,384评论 10 138
  • 1 消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,...
    Bobby0322阅读 13,736评论 0 24
  • 拯救世界 略 开始的假设 我们假设你使用ZeroMQ 3.2以上的版本。我们假设你使用Linux或者类似的操作系统...
    lakerszhy阅读 13,970评论 1 14

友情链接更多精彩内容