ActiveMQ(04):JMS的模型

简介:

一、简介

主要分为:JMS PTP模型、JMS的Pub/Sub模型

二、PTP模型

2.1 简介

JMS PTP(Point-to-Point)模型定义了客户端如何向队列发送消息,从队列接收消息,以及浏览队列中的消息。


  PTP模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能。

和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。

2.2 特点

1:如果在Session 关闭时,有一些消息已经被收到,但还没有被签收(acknowledged),那么,当消费者下次连接到相同的队列时,这些消息还会被再次接收

2:如果用户在receive方法中设定了消息选择条件,那么不符合条件的消息会留在队列中,不会被接收到

3:队列可以长久地保存消息直到消费者收到消息。消费者不需要因为担心消息会丢失而时刻和队列保持激活的连接状态,充分体现了异步传输模式的优势

三、Pub/Sub模型

3.1 简介

  JMS Pub/Sub 模型定义了如何向一个内容节点发布和订阅消息,这些节点被称作topic主题可以被认为是消息的传输中介,发布者(publisher)发布消息到主题,

订阅者(subscribe) 从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立,不需要接触即可保证消息的传送。

3.2 特点

1:消息订阅分为非持久订阅和持久订阅

   非持久订阅只有当客户端处于激活状态,也就是和JMS Provider保持连接状态才能收到发送到某个主题的消息,而当客户端处于离线状态,这个时间段发

  到主题的消息将会丢失,永远不会收到。

   持久订阅时,客户端向JMS 注册一个识别自己身份的ID,当这个客户端处于离线时,JMS Provider会为这个ID 保存所有发送到主题的消息,当客户再次连

  接到JMSProvider时,会根据自己的ID 得到所有当自己处于离线时发送到主题的消息。

2:如果用户在receive 方法中设定了消息选择条件,那么不符合条件的消息不会被接收

3:非持久订阅状态下,不能恢复或重新派送一个未签收的消息。只有持久订阅才能恢复或重新派送一个未签收的消息。

4:当所有的消息必须被接收,则用持久订阅。当丢失消息能够被容忍,则用非持久订阅

本文转自我爱大金子博客51CTO博客,原文链接http://blog.51cto.com/1754966750/1914937如需转载请自行联系原作者


我爱大金子

相关文章
|
6月前
|
消息中间件 Java 数据库连接
03JMS简介
03JMS简介
28 0
|
8月前
|
消息中间件 Java 中间件
JMS 和 AMQP
JMS 和 AMQP简介
126 0
|
消息中间件 存储 负载均衡
理解RabbitMQ中的AMQP-0-9-1模型
之前有个打算在学习RabbitMQ之前,把AMQP详细阅读一次,挑出里面的重点内容。后来找了下RabbitMQ的官方文档,发现了有一篇文档专门介绍了RabbitMQ中实现的AMQP模型部分,于是直接基于此文档和个人理解写下这篇文章。
155 0
理解RabbitMQ中的AMQP-0-9-1模型
|
消息中间件 存储 网络协议
Spring Boot与消息(JMS、AMQP、RabbitMQ)
1.概述。 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力。 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination)。 当消息发送者发送
243 0
|
消息中间件 Java 数据库
ActiveMQ系列:JMS的可靠性
持久化消息这是队列的的默认传送模式,此模式保证这些消息只被传送一次和成功使用一次。对于这些消息,可靠性是优先考虑的因素。可靠性的另一个重要方面是确保持久性消息传送至目标后,消息服务在向消费者传送它们之前不会丢失这些消息。
112 0
ActiveMQ系列:JMS的可靠性
|
消息中间件 Java 大数据
JMS VS AMQP
《高性能》系列
105 0
JMS VS AMQP
|
消息中间件 Java 物联网
AMQP-RabbitMQ/1/概念/一对一简单模型
JMS,AMQP,MQTT的区别与联系 JMS Java消息传递服务(Java Messaging Service ) AMQP 高级消息队列协议(Advanced Message Queueing Protocol ) MQTT消息队列遥测传输(Message Queueing Telemetry Transport ) 简单理解:*JMS是专门为Java设计的一套消息服务API,像ActiveMQ就是对它的实现*AMQP为了解决不同平台之间的通信问题,定义了一种名为amqp的通信协议,从而实现平台和语言无关性。
1172 0
|
消息中间件 Java Spring
消息中间件系列三、JMS和activeMQ的简单使用
一、JMS 1、什么是JMS   JMS(JAVA Message Service,java消息服务)本质是API,Java平台消息中间件的规范,java应用程序之间进行消息交换。并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
4059 1
|
消息中间件 Java Kafka
Kafka是什么,JMS是什么,常见的类JMS消息服务器,为什么需要消息队列(来自学习笔记)
Kafka是什么,JMS是什么,常见的类JMS消息服务器,为什么需要消息队列(来自学习笔记) 1、Kafka是什么  Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
3319 0