消息系统:点对点&发布订阅?

简介: 消息系统:点对点&发布订阅?

消息系统,是系统中负责消息从一个应用传递到另外一个应用,对于应用本身而言,就不需要去关心消息数据的传递过程,只需要关系数据本身即可。


在分布式消息系统中异步的进行消息的传递,存在两种典型模式,那就是点对点消息系统和发布订阅消息系统。


下面我们就来看一下这两种模式各自的特点吧。


点对点消息系统


先不多说,先画图,看的真切。

image.png


如图则是点对点消息系统的一种经典图例,消息传出方将消息数据发送给消息队列,然后由消费者,也就是消息接收方去进行消费;但是这里会存在一个消息只能被消费一次,当一个消息数据被消费后,这个消息数据会在消息队列中消失。


这也是点对点消息系统的特点,因为每个消息数据只能被消费使用一次,所以就避免了重复消费的问题。


发布订阅消息系统


图示如下。


image.png

发布订阅消息系统是大部分分布式企业级系统的优选方案。


发布者将消息数据持久化到数据队列中,准确的说这里不是数据队列了,是Topic,然后由多个订阅者去消费,每个消息数据可以被多个订阅者进行消费。


数据被消费后,不会被topic删除,而且发送到topic中的消息数据可以被所有订阅者消费,这也是发布订阅消息系统和点对点消息系统最本质的区别。


如何选择


这里如果要去对消息队列的模式进行选择,还是要去根据具体场景来进行选择,比如如果你的服务要被多个服务调用,那毋庸置疑的要选择发布订阅消息系统了。


相关文章
|
11月前
|
存储 缓存 监控
|
10月前
|
安全
ConcurrentHashMap原如何保证的线程安全?
JDK1.7:使用分段锁,将一个Map分为了16个段,每个段都是一个小的hashmap,每次操作只对其中一个段加锁 JDK1.8:采用CAS+Synchronized保证线程安全,每次插入数据时判断在当前数组下标是否是第一次插入,是就通过CAS方式插入,然后判断f.hash是否=-1,是的话就说明其他线程正在进行扩容,当前线程也会参与扩容;删除方法用了synchronized修饰,保证并发下移除元素安全
253 2
|
8月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
Docker 容器
Docker 安装 Zookeeper
Docker 安装 Zookeeper
229 2
|
存储 Linux 网络安全
【操作系统】实验二 Proc文件系统
【操作系统】实验二 Proc文件系统
335 1
|
JSON 前端开发 Java
Spring 注解之@RestController与@Controller的区别
Spring 注解之@RestController与@Controller的区别
472 0
|
存储 Kubernetes 调度
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
195 0
|
Java Maven 开发工具
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)1
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
397 2
|
分布式计算 资源调度 Hadoop
go语言安装及其环境配置
go语言安装及其环境配置
344 0

热门文章

最新文章