首页 > 其他分享 >发布-订阅(Publish-and-Subscribe)模型

发布-订阅(Publish-and-Subscribe)模型

时间:2023-07-20 10:46:33浏览次数:37  
标签:订阅 模型 代理 Publish Subscribe 发布 消息 发布者

发布-订阅(Publish-and-Subscribe)模型是一种消息传递模式,用于在软件系统中实现异步通信和解耦。它基于发布者(发布消息的实体)和订阅者(接收和处理消息的实体)之间的解耦原则。

在发布-订阅模型中,发布者和订阅者之间不直接交互,而是通过一个称为消息代理或消息中间件的组件来进行通信。该代理负责接收来自发布者的消息并将其传递给相应的订阅者。

下面是发布-订阅模型的基本原理和组件:

1. **发布者(Publisher)**:发布者是生成和发送消息的实体。它负责将消息发布到消息代理中,并不关心谁会接收这些消息。

2. **订阅者(Subscriber)**:订阅者是接收和处理消息的实体。它注册到消息代理中,指定它感兴趣的消息类型或主题。每当与其订阅条件匹配的消息到达消息代理时,订阅者将接收到该消息。

3. **消息代理(Message Broker)**:消息代理是一个中间组件,负责接收、存储和转发消息。它维护发布者和订阅者之间的解耦,确保消息能够被正确路由到对应的订阅者。消息代理可以采用多种实现方式,例如消息队列、消息总线或事件总线。

4. **主题(Topic)**:主题是一种消息的逻辑分类或标识。发布者将消息发布到一个或多个主题上,而订阅者则选择订阅感兴趣的主题。消息代理使用主题来匹配消息和订阅者,确保消息被传递给正确的订阅者。

使用发布-订阅模型的好处包括:

- **解耦**:发布者和订阅者之间的解耦使系统的不同部分可以独立开发、部署和扩展,而不会相互影响。
- **可扩展性**:可以轻松地添加新的发布者和订阅者,而不会影响现有的组件。
- **灵活性**:订阅者可以选择性地接收感兴趣的消息,而不会受到其他消息的干扰。
- **异步通信**:发布-订阅模型支持异步通信,发布者和订阅者不需要同时在线。

总结起来,发布-订阅模型通过引入消息代理来实现发布者和订阅者之间的解耦,从而提供了一种灵活、可扩展的消息传递机制。它在许多领域中得到广泛应用,如消息队列系统、事件驱动架构、实时数据流处理等。

标签:订阅,模型,代理,Publish,Subscribe,发布,消息,发布者
From: https://www.cnblogs.com/tangjicheng/p/17567675.html

相关文章

  • Redis 的发布订阅
    Redis发布订阅Redis发布订阅(pub/sub)是一种消息通信模式发送者发送消息pub接受者订阅消息sub例如微信,微博这样的关注系统Redis的客户端可以订阅任意数量的频道,不受限制来看看图示消息发布者消息订阅者频道这里的消息发布者,和消息订阅者都是redis客户端,订阅者订阅某个频道,......
  • Java 实现 WebSocket 集群转发:使用 Redis 发布订阅
    场景浏览器客户端client1连接到了服务端A的websocket节点。浏览器客户端通过弹性负载均衡,把请求分配到了服务端B,服务端B上没有client1的连接。需求服务端B把消息转发到服务端A上,找到客户端client1的连接,发送出去。画示意图......
  • redis publish Unsupported protocol version 123
    实现“redispublishUnsupportedprotocolversion123”1.概述首先,让我们解释一下"redispublishUnsupportedprotocolversion123"的含义。这是一个错误消息,意味着Redis客户端使用了不支持的协议版本号。要解决这个问题,我们需要做一些步骤。2.解决步骤下面是解决该问题......
  • 什么是 Rxjs Observable subscribe 方法的副作用
    RxJSObservable是一个强大的用于处理异步或多值的工具。它可以被看作一个事件流,开发人员可以监听这个事件流,并在事件发生时执行一些操作。这就是为什么说Observable的subscribe方法有副作用(sideeffects):因为当开发人员订阅(subscribe)一个Observable时,开发人员实际上是在定......
  • 关于 Observable 对象调用 subscribe 方法时不传递任何参数值的用法讨论
    在RxJS中,subscribe方法是用于订阅Observable对象并接收数据的关键方法。通过subscribe方法,我们可以注册观察者(Observer)来处理Observable发出的数据、错误和完成信号。该方法接收三个可选的回调函数作为参数:next、error和complete。下面是subscribe方法的作用和示例......
  • 145.观察者模式和发布订阅模式有什么不同
    145.观察者模式和发布订阅模式有什么不同?发布订阅模式其实属于广义上的观察者模式在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接收事件并作出响应。而在发布订阅模式中,发布者和订阅者之间多了一个调度中心。调度中心一方面从发布者接收事件,......
  • ZeroMQ: Java 请求/响应和发布/订阅模式的简单实现
    转载于:https://blog.csdn.net/weixin_47951400/article/details/119142454 文章目录POM一、请求响应模式(ZMQ_REQ+ZMQ_REP)1.REP2.REQ3.测试REPREQ测试结果二、发布/订阅模式(ZMQ_PUB+ZMQ_SUB)1.PUB2.SUB3.测试PUBSUB测试结果 POM ......
  • 同一消费者组订阅关系不一致引发的思考
    RocketMQ4.9.4现象编写两个消费者,它们属于同一个消费者组,订阅同一个主题,但是不一样的tag。比如消费者1订阅tagA,消费者2订阅tagB。先让消费者1启动,启动完后借助rocketmq-dashboard查看此时消费者组的订阅关系是tagA,然后启动消费者2,稍等一会在rocketma-dashboard中查看消费者组......
  • redis的订阅发布功能中,前端如何监听到消息,并修改前端页面。
    ......
  • 微信小程序订阅模板消息推送
    背景在实际的小程序开发过程中往往需要用到给用户发送订阅消息,比如:我们在店里扫码点餐时在付款时往往弹出一个授权窗口(比如‘取餐通知’)这个时候我们就需要对接微信小程序的模板消息。[https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subs......