点对点消息传送模型

点对点(p2p)消息传送模型

在p2p模型中,生产者成为发送者,而消费者成为接收者。点对点最重要的特性如下:

  • 消息通过成为队列的一个虚拟通道来进行交换。
  • 每条消息仅会传送给一个接收者。可能会有多个接收者在一个队列中侦听,但是每个队列中的消息只能被队列中的一个接收者所消费。
  • 消息存在先后顺序。一个队列会按照消息服务器将消息放入队列中的顺序,把它们传送给消费者。当消息已被消费时,就会从队列中将它们删除。(除非使用了消息优先级外)
  • 生产者和消费者之间没有耦合。接收者和发送者可以在运行时动态添加,这使得系统的复杂度随着时间而增长或降低。

供p2p队列使用的消息,既可以是持久性的,也可以使非持久性的。消息还可以有一个优先级和一个有效期。

点对点消息传送模型有两种类型:异步即发即弃(fire-and-forget)处理和异步请求/应答处理。

  • 异步即发即弃,消息生产者向某个队列发送一条消息,而且它并不会期望接收到一个相应(至少是不是立刻接收到相应)
  • 异步请求/应答处理,消息生产者向队列发送一条消息,然后阻塞等待应答队列,该应答队列正在等待来自接收者的相应。

使用点对点消息传送模型的场景:

  • 每条消息都很重要
  • 接受者对某个指定的消息进行一次而且仅仅一次处理。它所提供的QueueBrowser允许JMS客户端对队列进行快照(Snapshot),以查看正在等待被消费的消息。
  • 需要再组件之间进行同步消息,而那些组件确实不同的编程语言编写的,或者在不同的技术平台上实现的。
  • 使用基于消息的负载均衡,可以让服务器端的组件进行更大的吞吐量,特别是对于同构组件(也就是,Java到Java)更是如此。引入p2p模型,可以在体系结构中添加某种程度的并发处理,而不需要处理线程或者Java并发问题。

点对点消息传送模型,布布扣,bubuko.com

时间: 2024-10-12 13:54:06

点对点消息传送模型的相关文章

JMS消息服务器(二)——点对点消息传送模型

一.点对点模型概览 当你只需要将消息发布送给唯一的一个消息消费者是,就应该使用点对点模型.虽然可能或有多个消费者在队列中侦听统一消息,但是,只有一个且仅有一个消费者线程会接受到该消息. 在p2p模型中,生产者称为发送者,而消费者则称为接受者.点对点模型最重要的特性如下: 消息通过称为队列的一个虚拟通道来进行交换.队列是生产者发送消息的目的地和接受者消费消息的消息源. 每条消息通仅会传送给一个接受者.可能会有多个接受者在一个队列中侦听,但是每个队列中的消息只能被队列中的一个接受者消费. 消息存在先

发布/订阅消息传送模型

1.发布/订阅模型概览 发布/订阅(publish-and-subscribe)模型通常被简写为pub/sub模型.在这个模型中,消息生产者成为发布者(publisher),而消息消费者则称为订阅者(subscribe).在点对点模型中,是将消息发送到一个队列中,而发布/订阅模型则是将消息发布给一个主题.发布/订阅模型最重要的特性如下: 消息通过一个称为主题的虚拟通道进行交换. 每条消息都会传送给称为订阅者的多个消息消费者.订阅者有许多类型,包括持久性.非持久性和动态性. 发布者通常不会知道.也

ActiveMQ消息传送模型

无论采用哪种JMS 组件,JMS 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain 和Pub/Sub Domain. PTP(使用Queue即队列目标) 消息从一个生产者传送至一个消费者.在此传送模型中,目标是一个队列.消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息.可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至.并由一个消费者成功

JMS学习六(ActiveMQ消息传送模型)

ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/Sub Domain. 一.PTP消息传送模型 1.PTP(使用Queue 即队列目标) 消息从一个生产者传送至一个消费者.在此传送模型中,目标是一个队列.消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息.可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至.并

基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送

写了一个简单的JMS例子,之所以使用JNDI 是出于通用性考虑,该例子使用JMS规范提供的通用接口,没有使用具体JMS提供者的接口,这样可以保证我们编写的程序适用于任何一种JMS实现(ActiveMQ.HornetQ...). 什么是JNDI JNDI(Java Naming and Directory Interface)是一个标准规范,类似于JDBC,JMS等规范,为开发人员提供了查找和访问各种命名和目录服务的通用.统一的接口.J2EE 规范要求所有 J2EE 容器都要提供 JNDI 规范的

基于JMS的消息传送

简单的介绍下基于JMS的消息传送 Java消息队列JMS整体设计结构 基本要素:生产者(producer),消费者(consumere),消息服务(broker) 交互模型: JMS两种消息传送模式 点对点(Point-to-Point):专门用于使用队列Queue传送消息: 发布/订阅(Publish/Subscribe):专门用于使用主题Topic传送消息 两种传送方式比较 基于队列Queue的点对点消息只能被一个消费者消费,如多个消费者都注册到同一个消息队列上,当生产者发送一条消息后,而只

JMS发布/订阅消息传送例子

阅读目录 前言 在Tomcat中配置JNDI 在Web工厂中编写代码 参考资料 前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要的区别如下. 在Tomcat中配置JNDI 配置连接工厂和话题 <Resource name="topic/connectionFactory" auth="Container" ty

Android 的消息队列模型

Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的.    Android通过Looper.Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环).     Android系统中,Looper负责管理线程的消息队列和消息循环.我们可以通过Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Loo

Android应用程序线程消息循环模型分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是通过消息来驱动的,即在应用程序的主线程(UI线程)中有一个消息循环,负责处理消息队列中的消息.我们也知 道,Android应用程序是支持多线程的,即可以创建子线程来执行一些计算型的任务,那么,这些子线程能不能像应用程序的主线程一样具有消息循环呢?这 些子线程又能不能往应用程序的主线程中发送消息呢?本